一、Main()方法的簡介
1、一般情況下,一個C#可執行程序只有一個應用程序對象(也就是就程序入口),但是在某些情況,可能會有多個應用程序對象(程序入口),如單元測試中,這個時候我們就需要通過命令行指定以哪個Main()方法作為程序的入口。
2、分析Main()方法,我們發現Main()方法通過static修飾,這個主要是讓我們可以通過類名加方法的形式吊用Main()方法,我們再調用之前不需要創建對象的實例(也就是new出該對象)
3、分析Main()方法的參數是一個字符串(string[] args),這個參數可以包含任意數量的命令行輸入參數
二、Main()方法的的其他形式1、默認情況下,Visual Studio生成的Main()方法有一個void返回值,並且只接收一個參數(一個字符串數組,用於接收任意數量的命令行輸入參數)
public static void Main(string[] args) { //方法體 }
但是這不是唯一的Main()方法的形式,以下的Main()方法作為程序的入口點都是被允許的.
//整型返回類型,以字符串數組作為參數 static int Main(string[] args) { return 0; } //沒有返回值,沒有參數 static void Main() { } //整型返回類型,沒有參數 static int Main() { }
注意、如果不給Main()方法提供一個修飾符,那么Main()方法默認就是私有的,當然Main()方法可以定義成共有的,但是Visual Studio會把程序的Main()自動定義成隱式私有的,以確保其他程序不能直接吊用另一個程序的入口點
很明顯,選擇怎樣構造Main()方法要基於兩個問題。第一當Main()完成且程序終止時,是否要向系統返回一個值。第二是否需要處理用戶提供的命令行參數?如果是,他們將被保存到string數組中。
三、指定應用程序的錯誤代碼
絕大多數的Main()方法會以void作為返回值,但是C#和其他C類型的語言一樣,都可以從Main()返回一個int。根據慣例,返回值0表示程序正常結束,而其他值如(-1)表示程序有異常發生(要知道值0是自動返回的,即使Main()方法的原型結構返回為void)
四、在Main()方法中處理用戶輸入的命令行參數
在Main()方法中獲取用戶的命令行輸入參數有很多中方法
1、通過傳遞給Main()方法的string[] args的參數中的args引用來對用戶輸入進行常規的操作
static int Main(string[] args) { for(int i=0;i<args.length;i++) { Console.WriteLine("Arg:{0}",args[i]); } //foreach處理 foreach(string Arg in args) { Console.WriteLine("Arg:{0}",Arg); } }
2、通過VS自帶的可視化工具指定命令行參數
3、通過System.Environment的方法來獲取命令行參數
static int Main(string[] args) { string[] theArgs=Environment.GetCommandLineArgs();//通過System.Environment類來獲取命令行參數 for(int i=0;i<theArgs.length;i++) { Console.WriteLine("Arg:{0}",args[i]); } //foreach處理 foreach(string Arg in theArgs) { Console.WriteLine("Arg:{0}",Arg); } }