介紹了C#中Main(string[] args)方法的基本概念與及args參數的輸入與顯示輸出。 ...
Main(string[] args)方法是C#程式的入口,程式從這裡開始執行,在這裡結束。C#代碼邏輯要包含在一個類型(Type)中,游離的、全局的變數或函數是不存在的,這裡的類型包括類(class)、介面(interface)、結構(struct)、枚舉(enum)和委托(delegate)。Main()方法包含在一個類中,這個類的預設名字叫作Program,包含Main()的類叫作應用程式對象(Application Object)。新建一個控制台應用程式(ConsoleApplication)。
程式中包含的初始代碼為:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace exer 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 } 14 } 15 }
上面代碼中,exer是定義的命名空間,與創建的控制台應用程式的名稱相同;Main(string[] args)是程式的主方法(或稱主函數),即程式的入口,程式將從這裡開始執行,也在這裡結束;Program是包含Main()方法的類,即上面提到的應用程式對象。
一個控制台應用程式項目中可以存在多個應用程式對象,即可以存在多個Main()方法分佈在不同的類中。但是程式每次執行時只能選擇啟動一個應用程式對象,即只能選擇一個Main()方法作為程式的入口。通知編譯器將哪個Main()方法作為程式的入口可以在項目屬性編輯器的應用程式(Application)選項卡中的啟動對象(Startup Object)處設置。
下麵編寫兩個應用程式對象,並分別啟動測試,代碼如下。其中,將用不到的using引用刪去了;Console.ReadLine()方法用來從控制台接收鍵盤輸入的一段以回車符結束的字元串,這裡起到暫停控制台的作用(否則調試程式時,控制台會一閃而過!),但也可以不調試程式而是直接運行,就不會出現一閃而過的情況了。
1 using System; 2 3 namespace exer 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 Console.WriteLine("From Program!"); 10 Console.ReadLine(); 11 } 12 } 13 14 class AnotherProgram 15 { 16 static void Main(string[] args) 17 { 18 Console.WriteLine("From AnotherProgram!!"); 19 Console.ReadLine(); 20 } 21 } 22 }
調試程式,編譯器報錯。
打開項目屬性編輯器,在應用程式(Application)選項卡中的啟動對象(Startup Object)下拉框中選擇程式入口點,分別運行程式,查看結果。
一、關於Main()方法
Main()方法形式一般如下:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 6 } 7 }
其中,static表示Main()方法是一個靜態方法;void表示Main()方法返回值為空,是說我們不需要在Main()方法結尾處寫上return語句來顯示定義一個返回值,但程式在運行結束後還是會自動返回給系統一個表示程式是否正常結束的值(0或其他值,0表示程式正常結束、其他值如-1表示程式有錯誤發生);Main()方法中有一個字元串數組類型的形式參數,包含程式啟動時傳遞給系統的命令行參數。
除了這種預設的形式,Main()方法還可以是其他的形式。構造什麼樣的Main()方法需要考慮兩個問題:①程式執行結束後是否要向系統返回一個值 ②程式是否需要處理用戶提供的命令行參數
1 class Program //預設形式 2 { 3 static void Main(string[] args) 4 { 5 6 } 7 } 8 class Program 9 {
10 static int Main(string[] args) 11 { 12 return 0; 13 } 14 } 15 class Program 16 { 17 static void Main() 18 { 19 20 } 21 } 22 class Program 23 { 24 static int Main() 25 { 26 return 0; 27 } 28 }
二、提供給程式命令行參數
Main(string[] args)方法中,用戶提供的命令行參數是保存在args字元串數組中的,當提供參數後,在Main()方法中就可以遍歷args數組查看這些參數。設置遍歷參數的C#語句(也可以使用foreach)。
1 for(int i=0;i<args.Length;i++) 2 Console.WriteLine("arg:{0}",args[i]);
那麼,如何提供給程式這些命令行參數呢?有兩種方法。
①Developer Command Prompt命令行中提供參數
打開DCP(開發人員命令提示),切換到程式所在路徑,運行已經編譯好的exer.exe應用程式同時輸入參數,參數可以不包括首碼('\'或'-',當然也可以包含..),以空格分隔。
②Visual Studio項目屬性編輯器中指定命令行參數,同樣以空格分隔
三、代碼訪問命令行參數的其他方法
當提供給程式命令行參數後,可以使用for或者foreach語句進行args參數的遍歷,還可以使用System.Environment類的靜態方法GetCommandLineArgs()進行參數的訪問。System.Environment.GetCommandLineArgs()返回一個字元串數組,即包含命令行參數的數組。
1 static void Main(string[] args) 2 { 3 Console.WriteLine("From Program!"); 4 5 //for(int i=0;i<args.Length;i++) 6 // Console.WriteLine("arg:{0}",args[i]); 7 8 string[] arr = System.Environment.GetCommandLineArgs(); 9 for(int i=0;i<arr.Length;i++) 10 Console.WriteLine("arg:{0}",arr[i]); 11 Console.ReadLine(); 12 }
System.Environment.GetCommandLineArgs()返回的字元串數組中,第一個字元串是當前應用程式的完全路徑名,其他字元串是用戶提供給程式的命令行參數。當使用這種方法獲取命令行參數時,Main()括弧中可以去掉string[] args形式參數了。
返回目錄:C#學習筆記