Main 方法是 C# 应用程序的入口点。 (库和服务不要求使用 Main 方法作为入口点)。Main 方法是应用程序启动后调用的第一个方法。
C# 程序中只能有一个入口点。 如果多个类包含 Main 方法,必须使用 /main 编译器选项来编译程序,以指定将哪个 Main 方法用作入口点。
概述
-
Main
方法是可执行程序的入口点,也是程序控制开始和结束的位置。 -
Main
在类或结构中声明。Main
必须是静态方法,不得为公共方法。 (在前面的示例中,它获得的是私有成员的默认访问权限)。封闭类或结构不一定要是静态的。 -
Main
可以具有void
、int
,或者以 C# 7.1、Task
或Task<int>
返回类型开头。 - 当且仅当
Main
返回Task
或Task<int>
时,Main
的声明可包括async
修饰符。 请注意,该操作可明确排除async void Main
方法。 - 使用或不使用包含命令行自变量的
string[]
参数声明Main
方法都行。 使用 Visual Studio 创建 Windows 应用程序时,可以手动添加此形参,也可以使用 GetCommandLineArgs() 方法来获取命令行实参。 参数被读取为从零开始编制索引的命令行自变量。 与 C 和 C++ 不同,程序的名称不被视为args
数组中的第一个命令行实参,但它是 GetCommandLineArgs() 方法中的第一个元素。
以下是有效 Main 签名的列表:
Main() 返回值:
public static void Main() { } 退出代码将为隐式 0。
public static int Main() { return 0;}
Main 的返回值视为进程的退出代码。
定义方法来将自变量发送到 Main 方法:
public static void Main(string[] args) { }
public static int Main(string[] args) { }
Main
方法的参数是一个表示命令行参数的 String 数组。
Async Main 返回值将在 Main 中调用异步方法时所需的样本代码移动到编译器生成的代码中:
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();
}