لا بد أنك عزيزي المبرمج قد قمت بكتابة من الأوامر والتعليمات وأنشأت العديد من البرامج من نوع Console Application وخاصة في بداية تعلمك للغة C#، فهذا يعني أنك قد صادفت وبدون شك التابع Main،،
حديثي سيكون بداية عن التابع Main، دعني بداية أطرح عليك السؤال التالي:
ما هو التابع Main؟؟
الجواب وبكل بساطة هو أن هذا التابع يعتبر نقطة الانطلاق لأي برنامج، فأنت إنطلاقا من كونك مبرمج، وهذا شيء أكيد يجب أن تضع نصب عينيك أن أول تابع سوف يتم تنفيذه أو البدء بتنفيذه لن يكون سوى التابع Main، وبالتالي أنت ملزم ببناءه إن كنت لا تملك نسخة من Visual Studio، إذ أن بيئة Visual Studio ستقوم نيابة عنك ببنائه.
هل للتابع Main شكل محدد؟
لا ليس له شكل محدد، يمكنك بناؤه بعدة أشكال، ولكن ضمن بعض القواعد التالية:
- يجب أن يكون التابع ستاتيكي static.
- يجب أن يكون نوع القيمة المرجعة للتابع void أو int.
- يجب أن يكون اسم التابع حصريا Main فلا يمكن أن يكون main أو MaiN أو MAIN.
- يمكن أن يكون للتابع برامتر أو لا يكون.
- ليس من الضروري أن يكون التابع public.
لاحظ بعض من أشكاله:
{
}
static int Main(string[] args)
{
}
static void Main()
{
}
لابد وأن الشكل الثاني بالنسبة للقيمة المرجعة int من الأشكال الغير مألوفة لديك، إلا إذا كنت من مبرمجي لغة C, دعني أشرح لك القضية لا بد أنك سريع البديهة ولاحظت أنه في هذه الحالة يتوجب عليك إرجاع قيمة باستخدام تعليمة return، إن الغاية من هذه القيمة المرجعة هي معرفة الحالة التي انتها بها البرانامج، أي أن البرنامج إذا أرجع قيمة 0 فهذا يعني أن البرنامج قد انهى التنفيذ بنجاح ما عدا ذلك تنعني أنه قد حصل خطأ ما أثناء تنفيذ البرنامج، والان قد يتبادر إلى ذهنك ما هي الفائدة من هذه القيمة المرجعة؟
إن نظام التشغيل يلتقط هذه القيمة ويضعها في متحول اسمه %ERRORLEVEL%، وبالتالي إذا كنت قد أنشأت برنامج يقوم بتشغيل برنامج آخر، فإنك قد تحتاج لمعرفة الحالة التي أنهى بها البرنامج عمله!!
وبالتالي حتى تستطيع الوصول إلى القيمة التي أعادها البرنامج فهناك طريقتين:
الأولى،، عن طريق المتحول %ERRORLEVEL%
الثانية،، عن طريق الخاصة System.Diagnostics.Proccess.ExitCode
-
قم بإنشاء مشروع من نوع Console Application
-
ضمن التابع Main قم بكتابة الكود التالي:
{
// Display a message and wait for Enter key to be pressed
Console.WriteLine(“Hello World!”);
Console.WriteLine();
// Return an arbitrary error code.
return -1;
}
-
إذهب إلى مجلد Debug الموجود داخل مجلد bin، وقم بإنشاء ملف باسم Test.bat، وباسخدام برنامج Notepad قم بكتابة الكود التالي:
rem A batch file for SimpleCSharpApp.exe
rem which captures the app’s return value.
UsingErrorLevel.exe
@if %ERRORLEVEL% == “0″ goto success
:fail
echo This application has failed!
echo return value = %ERRORLEVEL%
goto end
:success
echo This application has succeeded!
echo return value = %ERRORLEVEL%
goto end
:end
echo All Done.
{
foreach (string s in args)
{ Console.WriteLine(s); }
}
إن الإجابة عن السؤال غاية في البساطة، قم بتشغيل نافذة محرر الأوامر Command Line، الخاصة بالـ Visual Studio أو الخاصة بنظام التشغيل Windows، وبعد أن تحدد المسار الموجود عليه الملف التنفيذي للبرنامج السابق، قم بكتابة التالي:
- من نافذة Solution Explorer حدد على مشروعك ثم إضغط عليه بزر الفأرة الأيمن لتظهر قائمة منسدلة إختر منها Properties، لتظهر لك النافذة التالية:
- ثم إختر التبويب Debug، لاحظ الشكل التالي:
- لاحظ الخيار Command line arguments، من خلال مربع النص هذا يمكنك كتابة القيم التي تود تمريرها إلى برنامجك، فمثلا جرب المثال السابق بكتابة C#.NET C++.NET VB.NET، ثم قم بتشغيل البرنامج مرة أخرى لتلاحظ ذات النتائج.
- التابع: GetCommandLineArgs()
وظيفة هذا التابع هو القيم التي مررت للبرنامج أثناء تشغيله، وبالتالي هذا يغنيك عن البرامتر args الموجود ضمن التابع Main. - الخاصية: ExitCode
هذه الخاصة تماثل عمل المتحول %ERRORLEVEL% الذي سبق وتحدثنا عنه. - الخاصية: MachineName
هذه الخاصية تعطيك اسم الحاسب.
- الخاصية: SystemDirectory
هذه الخاصية تقدم لك مسار مجلد نظام التشغيل لديك كاملاً.




أحدث التعليقات