我正在使用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数组永远不会为空。
修改:简化了我的示例。
答案 0 :(得分:7)
C#标准在 3.1应用程序启动:
部分解决了这个问题入口点可以选择性地具有一个形式参数。参数可以具有任何名称,但参数的类型必须是string []。如果存在形式参数,则执行环境将创建并传递一个string []参数,该参数包含在启动应用程序时指定的命令行参数。 string []参数永远不为null ,但如果没有指定命令行参数,则长度可以为零。
(我的粗体)
所以答案是:不,控制台应用程序的Main()
永远不会收到空args[]
参数。
答案 1 :(得分:-2)
不,他们不能。对于null检查,string [] args永远不会为true,因为即使你没有为它们提供值也永远不会为null ....