在 C# 中,您可以为主方法使用 4 种不同的方法签名:
static void Main(string[] args) {}
static int Main(string[] args) { return 0; }
static void Main () {}
static int Main {return 0;}
在进一步研究 Main 时,该引用文献指出,即使您构造一个原型(prototype)为返回 void 的 Main() 方法,也会自动返回值 0。
话虽如此,如果无论如何都会返回的话,为什么要使用签名返回 int 的 Main 方法呢?据我了解,返回值保存在名为 %ERRORLEVEL% 的变量中,并且您可以使用批处理文件捕获此代码,我只是对始终提供的返回值感到好奇。谢谢。
最佳答案
它们被称为退出代码
它是程序返回的状态或执行代码。现在它有点遗留,但一般来说它是为了让调用者知道执行情况。
零通常意味着成功执行。
正如代码中的函数向其调用者返回一个值一样,您的程序也应该向其调用者(如脚本或操作系统)返回一个值。
返回代码是过去的遗物,但在某些情况下仍然使用,例如控制台应用程序,因为它简单且易于处理。
为什么应该使用其中一种而不是另一种?
如果你无意返回错误代码,C#已经添加了允许void的语法糖,所以你不需要考虑返回任何东西。在大多数情况下,这没问题。
但是,如果您正在开发控制台应用程序,并且希望让调用者处理代码中的任何结果,则返回代码是实现此目的的一种简单且标准化的方法。
static int Main(string[] args) { return 0; } // Everything went fine
static int Main(string[] args) { return -1; } // An error occured.
static int Main(string[] args) { return 2; } // Program completed, with warnings.
static void Main(string[] args) { } // Just returns zero.
代码的含义取决于每个程序,并将记录在文档或类似文件中。
See this answer for how it can be used in bat files:
.bat 文件示例
@echo off
myprogram.exe
if errorlevel 1 (
echo Failure Reason Given is %errorlevel%
exit /b %errorlevel%
)
关于c# - 使用显式返回 int 的 Main 方法的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41593722/