2

何度も試しましたが、NDESK.Options の解析例を単純な vb.net コードに変換することはできません (申し訳ありませんが、私はプロではありません)。

彼らが提供する唯一の例はここにあります: http://www.ndesk.org/doc/ndesk-options/NDesk.Options/OptionSet.html

ただし、コードのこの重要な部分がわかりません。

var p = new OptionSet () {
        { "n|name=", "the {NAME} of someone to greet.",
          v => names.Add (v) },
        { "r|repeat=", 
            "the number of {TIMES} to repeat the greeting.\n" + 
                "this must be an integer.",
          (int v) => repeat = v },
        { "v", "increase debug message verbosity",
          v => { if (v != null) ++verbosity; } },
        { "h|help",  "show this message and exit", 
          v => show_help = v != null },
    }; 

この部分: v => names.Add (v) は、次の vb.net に相当するものを取得します: Function(v) names.Add (v)、私は取得しません。

誰かがとても親切で、より理解しやすい一連のコマンドで投稿できますか?

4

1 に答える 1

5

NDesk.Options OptionSet オブジェクトの上記コードの VB.NET バージョンを次に示します。
このコード例では、コレクション初期化子を使用しています。

Static names = New List(Of String)()
Dim repeat As Integer
Dim verbosity As Integer
Dim show_help As Boolean = False

Dim p = New OptionSet() From {
 {"n|name=", "the {NAME} of someone to greet.", _
     Sub(v As String) names.Add(v)}, _
 {"r|repeat=", _
     "the number of {TIMES} to repeat the greeting.\n" & _
     "this must be an integer.", _
     Sub(v As Integer) repeat = v}, _
 {"v", "increase debug message verbosity", _
     Sub(v As Integer) verbosity = If(Not IsNothing(v), verbosity + 1, verbosity)}, _
 {"h|help", "show this message and exit", _
     Sub(v) show_help = Not IsNothing(v)}
 }

このコード例では、OptionSet コレクションを作成し、Add メソッドを呼び出して各オプションを追加します。また、最後のオプションは、関数の関数ポインタ (AddressOf) を渡す例です。

Static names = New List(Of String)()
Dim repeat As Integer
Dim verbosity As Integer
Dim show_help As Boolean = False

Dim p = New OptionSet()
p.Add("n|name=", "the {NAME} of someone to greet.", _
            Sub(v As String) names.Add(v))
p.Add("r|repeat=", _
            "the number of {TIMES} to repeat the greeting.\n" & _
            "this must be an integer.", _
            Sub(v As Integer) repeat = v)
p.Add("v", "increase debug message verbosity", _
            Sub(v As Integer) verbosity = If(Not IsNothing(v), verbosity + 1, verbosity))
p.Add("h|help", "show this message and exit", _
            Sub(v) show_help = Not IsNothing(v))
' you can also pass your function address to Option object as an action.
' like this:
p.Add("f|callF", "Call a function.", New Action(Of String)(AddressOf YourFunctionName ))
于 2012-08-16T20:55:01.500 に答える