为什么C#使用隐式void?

IVl*_*lad 13 .net c# standards

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

所以我的问题是:

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

Mat*_*ias 16

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

也许它默认是无效的,以免让初学者感到困惑.

  • 默认情况下它是无效的,因为你通常不需要在win app中从Main()返回任何东西(返回代码是来自dos的遗留代码) (5认同)

Hen*_*man 12

在C#中,您可以使用,请参阅MSDN:

 static int Main() 
 static int Main(string[] args)
 static void Main() 
 static void Main(string[] args)
Run Code Online (Sandbox Code Playgroud)

这种灵活性(混淆)也存在于C++中并且是从C继承的.

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

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

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

  • 回答者似乎指的是你能做什么,而不是标准. (2认同)

Sea*_*ean 7

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

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


Neb*_*oft 6

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

System.Environment.ExitCode = 1; // Or whatever number other than 0 for errors.
Run Code Online (Sandbox Code Playgroud)