C#控制台应用程序可以接收空参数吗?

时间:2017-09-26 09:56:38

标签: c# command-line

我正在使用C#编写的命令行应用程序进行清理。我想知道是否需要对传入的string[] args数组执行空检查? E.g:

static int Main(string[] args)
{         
    if(args != null) { // is this needed?

    }
}

请注意我找到了similar question concerning Java,但无法找到有关C#中命令行参数的任何内容(通常是& .NET)。

另请注意,我确实尝试不向我的命令行应用程序传递任何参数,并且从未设法使args数组对象为null。我也尝试使用Environment.GetCommandLineArgs() utility function访问命令行参数,而且也永远不会为空。

我也读过MS编写的这个guide,并且看不到任何明确的保证args数组永远不会为空。

修改:简化了我的示例。

2 个答案:

答案 0 :(得分:7)

C#标准在 3.1应用程序启动

部分解决了这个问题
  

入口点可以选择性地具有一个形式参数。参数可以具有任何名称,但参数的类型必须是string []。如果存在形式参数,则执行环境将创建并传递一个string []参数,该参数包含在启动应用程序时指定的命令行参数。 string []参数永远不为null ,但如果没有指定命令行参数,则长度可以为零。

(我的粗体)

所以答案是:不,控制台应用程序的Main()永远不会收到空args[]参数。

答案 1 :(得分:-2)

不,他们不能。对于null检查,string [] args永远不会为true,因为即使你没有为它们提供值也永远不会为null ....