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

StackOverflow https://stackoverflow.com/questions/82838

  •  01-07-2019
  •  | 
  •  

質問

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

それは単に好みなのでしょうか、それとも今は 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 の質問ではありません。

役に立ちましたか?

解決

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

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

他のヒント

ゲオプトをご存知ですか?codeplex には C# 用のポートがあります。 http://www.codeplex.com/getopt

最初の方法の方が簡単なので、より良いです。

私にとっては、最初の方法の方が直観的であるように思えます。なぜなら、それが私が C/C++ 時代からそうしてきたからです。

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

よろしく、

kgr

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top