webdevqa.jp.net

コンソールアプリケーションでコマンドラインパラメータを読み取るための最良の方法

以下は、コマンドラインパラメータを読み取る2つの方法です。 1つ目は、メインのパラメーターを使用して見慣れている方法です。コードをレビューするときに偶然見つけた2番目。 2番目は配列の最初の項目をパスとアプリケーションに割り当てますが、最初の項目はこれをスキップします。

それは単なる好みですか、それとも2番目の方法が今より良い方法ですか?

Sub Main(ByVal args() As String)
    For i As Integer = 0 To args.Length - 1
        Console.WriteLine("Arg: " & i & " is " & args(i))
    Next

    Console.ReadKey()
End Sub



Sub Main()
    Dim args() As String = System.Environment.GetCommandLineArgs()

    For i As Integer = 0 To args.Length - 1
        Console.WriteLine("Arg: " & i & " is " & args(i))
    Next

    Console.ReadKey()
End Sub

同じことがC#でもできると思うので、必ずしもvb.netの質問ではありません。

19
osp70

2番目の方法はmain()の外部で使用できるため、より優れています。したがって、リファクタリングするときは、考えることが1つ少なくなります。

また、最初の方法でメソッドパラメータに引数を配置する「魔法」も好きではありません。

22
David Thibault

Getoptを知っていますか? codeplexにはC#用のポートがあります: http://www.codeplex.com/getopt

3
Thomas

最初の方法は単純なので、より良い方法です。

2
user12861

最初の方法は、C/C++の時代からやってきた方法であるため、より直感的に思えます。

コマンドラインにスイッチが多すぎる場合は、Thomasが推奨するgetoptを確認してください。とても便利です。私は同じのC#ポートを見たことがありません。

よろしく、

kgr

1
kgr