8

我继承了几个控制台应用程序的维护,这些应用程序自然是使用static void Main(string[] args). 但是,代码忽略了args数组,而是从System.Environment.CommandLine.

这里有功能差异吗?

内容看起来一样。如果有的话,我会怀疑调用会对性能造成一分钟的打击System.Environment.CommandLine(但还不足以让我担心或关心到足以衡量)。


更新:我怀疑它System.Environment.CommandLine应该包含可执行路径,但我没有看到它......因为我找错了地方。代码 ALSO 有string[] arrCmdLine = System.Environment.GetCommandLineArgs();....System.Environment.CommandLine.ToLower()检查是否存在“调试”,而所有其他参数都从中提取GetCommandLineArgs(),我在精神上将两者混为一谈,而我正在“为什么不只是使用args[]?”

多年来,我一直在为解析命令行参数的最佳方式而苦恼,而一直以来都是“将它们按正确的顺序放置!” [jk]

4

1 回答 1

11

System.Environment.CommandLine包括作为单个字符串的可执行文件和参数。

// Sample for the Environment.CommandLine property.
using System;

class Sample 
{
    public static void Main() 
    {
        Console.WriteLine();
        //  Invoke this sample with an arbitrary set of command line arguments.
        Console.WriteLine("CommandLine: {0}", Environment.CommandLine);
    }
}

/*
This example produces the following results:

C:\>env0 ARBITRARY TEXT

CommandLine: env0 ARBITRARY TEXT
*/

http://msdn.microsoft.com/en-us/library/system.environment.commandline.aspx

参数是一个args参数数组。因此,虽然您可以解析 中的各个参数System.Environment.CommandLine,但我不确定您为什么要这样做。我能看到的唯一原因是您是否需要访问 之外的参数Main(),无论如何这可能是个坏主意。您的Main()方法应该处理参数并根据需要将它们传递给应用程序的其余部分。

于 2012-06-14T19:02:55.130 回答