Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用显式返回int的Main方法的目的_C#_Oop - Fatal编程技术网

C# 使用显式返回int的Main方法的目的

C# 使用显式返回int的Main方法的目的,c#,oop,C#,Oop,在C#中,您可以对主方法使用4种不同的方法签名: static void Main(string[] args) {} static int Main(string[] args) { return 0; } static void Main () {} static int Main {return 0;} 在进一步研究Main时,参考文献指出,即使构造Main()方法原型以返回void,值0也会自动返回 也就是说,如果签名返回int,那么为什么要使用Main方法呢?我知道返回值保存在

在C#中,您可以对主方法使用4种不同的方法签名:

static void Main(string[] args) {}

static int Main(string[] args) { return 0; }

static void Main () {}

static int Main {return 0;}
在进一步研究Main时,参考文献指出,即使构造Main()方法原型以返回void,值0也会自动返回


也就是说,如果签名返回int,那么为什么要使用Main方法呢?我知道返回值保存在一个名为%ERRORLEVEL%的变量中,您可以用批处理文件捕获此代码。我只是想知道,不管返回值是多少,都会被提供。谢谢。

返回值是errorlevel,您可以在批处理文件中使用errorlevel。

如果您依赖返回0的无效语法,那么您的程序将只返回0,按照惯例,0是成功执行的状态代码。对于许多用例来说,这可能很好,但是允许主方法显式返回int的要点是,您可以在不同的情况下返回不同的int。对于一个非常重要的应用程序,如果您在有意义的上下文中手动返回不同的int值,那么您将从该功能中获得比在所有终止场景中盲目返回0多得多的值

此外,您似乎在问,如果两者都返回整数,为什么要显式地说
static int Main
,而不是
static void Main
。除了上面关于返回有意义的值的注释之外,更广泛地说,如果您希望您的方法返回整数,那么使用显式语法而不是依赖回退行为是有意义的,因为修改或使用您的程序的其他人可能不知道或不直观地执行回退行为。从另一个角度看你的问题-如果你想让你的main方法返回int,为什么不使用语法来显式地返回int?void方法返回int值有意义吗?

它们被称为
Exit code
它是您的程序返回的状态或执行代码。它现在有些过时,但通常是为了让调用方知道执行过程如何

零通常意味着成功执行。

正如代码中的函数向其调用者返回值一样,程序也应该向其调用者返回值,如脚本或操作系统

返回代码是过去的遗物,但在某些情况下仍然使用,如控制台应用程序,因为它简单且易于处理

你为什么要用一个而不是另一个? 如果您无意返回错误代码,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.
代码的含义取决于每个程序,并将记录在文档或类似文档中

示例.bat文件
返回值可以在其他应用程序中使用。这是在批处理文件中运行且需要报告错误的文件的标准行为。当应用程序用作推荐行实用程序时,这非常有用,如果应用程序失败,则可以返回-1。一个示例自动数据库部署实用程序,它读取一些sql文件并将它们执行到目标服务器。这样做的好处是,您可以在构建/部署工具中添加实用程序,如果失败,它们将出现错误。这就是我要寻找的。美好的
@echo off
myprogram.exe
if errorlevel 1 (
   echo Failure Reason Given is %errorlevel%
   exit /b %errorlevel%
)