Main 方法是 C# 應(yīng)用程序的入口點竹椒。 (庫和服務(wù)不要求使用 Main 方法作為入口點)嘉赎。Main 方法是應(yīng)用程序啟動后調(diào)用的第一個方法。
C# 程序中只能有一個入口點亩冬。 如果多個類包含 Main 方法艘希,必須使用 /main 編譯器選項來編譯程序,以指定將哪個 Main 方法用作入口點硅急。
概述
-
Main
方法是可執(zhí)行程序的入口點覆享,也是程序控制開始和結(jié)束的位置。 -
Main
在類或結(jié)構(gòu)中聲明营袜。Main
必須是靜態(tài)方法撒顿,不得為公共方法。 (在前面的示例中荚板,它獲得的是私有成員的默認訪問權(quán)限)凤壁。封閉類或結(jié)構(gòu)不一定要是靜態(tài)的。 -
Main
可以具有void
跪另、int
拧抖,或者以 C# 7.1、Task
或Task<int>
返回類型開頭免绿。 - 當且僅當
Main
返回Task
或Task<int>
時唧席,Main
的聲明可包括async
修飾符。 請注意,該操作可明確排除async void Main
方法袱吆。 - 使用或不使用包含命令行自變量的
string[]
參數(shù)聲明Main
方法都行厌衙。 使用 Visual Studio 創(chuàng)建 Windows 應(yīng)用程序時,可以手動添加此形參绞绒,也可以使用 GetCommandLineArgs() 方法來獲取命令行實參婶希。 參數(shù)被讀取為從零開始編制索引的命令行自變量。 與 C 和 C++ 不同蓬衡,程序的名稱不被視為args
數(shù)組中的第一個命令行實參喻杈,但它是 GetCommandLineArgs() 方法中的第一個元素。
以下是有效 Main 簽名的列表:
Main() 返回值:
public static void Main() { } 退出代碼將為隱式 0狰晚。
public static int Main() { return 0;}
Main 的返回值視為進程的退出代碼筒饰。
定義方法來將自變量發(fā)送到 Main 方法:
public static void Main(string[] args) { }
public static int Main(string[] args) { }
Main
方法的參數(shù)是一個表示命令行參數(shù)的 String 數(shù)組。
Async Main 返回值將在 Main 中調(diào)用異步方法時所需的樣本代碼移動到編譯器生成的代碼中:
public static async Task Main() { }
public static async Task<int> Main() { }
public static async Task Main(string[] args) { }
public static async Task<int> Main(string[] args) { }
以前的語法壁晒。
public static void Main()
{
AsyncConsoleWork().GetAwaiter().GetResult();
}
private static async Task<int> AsyncConsoleWork()
{
// Main body here
return 0;
}
新語法瓷们。
static async Task<int> Main(string[] args)
{
return await AsyncConsoleWork();
}