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 に答える