为什么C#使用隐式void?

时间:2010-03-02 15:11:43

标签: c# .net standards

我不明白为什么C#的Main函数默认是无效的(例如在控制台项目中)。在C和C ++中,标准明确指出main必须返回int,并且使用返回值是有意义的,因为我们可以从外部程序检查返回值,看看C / C ++应用程序是否成功完成或遇到错误。

所以我的问题是:

  1. 为什么Visual Studio将Main声明为void?
  2. 一旦C#控制台应用程序执行完毕,将值返回给操作系统的最佳方法是什么?

8 个答案:

答案 0 :(得分:16)

您可以使用 int void 作为返回类型。因此,只需更改它并返回类似于C ++的值。

默认情况下,它可能是无效的,以免让初学者感到困惑。

答案 1 :(得分:12)

在C#中,您可以使用see MSDN

 static int Main() 
 static int Main(string[] args)
 static void Main() 
 static void Main(string[] args)

您还可以通过两种方式返回(int)值。

在控制台应用程序中,我会使用int Main() { ...; return 2; }

在WinForms / WPF / ...应用程序中,在极少数情况下需要返回值,我会使用
 Environment.ExitCode = 1;Environment.Exit(1);

答案 2 :(得分:7)

这并非隐含无效。在中,您不能只声明main(String [] args)并将其编译为void函数。默认项目将main()声明为void,因为默认项目没有任何有用的东西从main返回。

值得注意的是C#不是C或C ++。一些语法是相同的,但差异更大。

答案 3 :(得分:6)

为什么C#的开发人员决定将Main宣布为无效的原因我不能说。至于在应用程序完成后将值返回给操作系统,您可以使用:

System.Environment.ExitCode = 1; // Or whatever number other than 0 for errors.

答案 4 :(得分:3)

您可以更改Main的返回类型而不会出现任何问题。

答案 5 :(得分:2)

返回退出值的最佳方法是使用。我这样说是因为非零退出代码通常用于表示某些错误,通常是您不想继续的错误。使用非零退出值调用Exit都会通过该值发出错误信号并退出程序。

Environment.Exit( value );

编辑:注意,对于控制台程序,我的语句的上下文在Main范围内。库和其他方法应该抛出异常或返回错误值。只有您的主程序应该调用Exit。对不起,如果不清楚的话。

答案 6 :(得分:2)

请记住,你的程序还有另一个“盒子”--CLR。当您的代码抛出未处理的异常时,它将返回错误代码。

答案 7 :(得分:0)

您可以使用Environment.Exit()终止并向操作系统返回整数代码。或者,您可以设置Environment.ExitCode,只要您的程序正常终止,该代码就会返回给操作系统。