0

vb.net でこれを行うことができます。

Dim d= new Dictionary(of string, string) from {{"a","valA"},{"b","valB"}}

便宜上、次のことを可能にする方法を教えてください。

public sub Setup(args)
   Dim d= new Dictionary(of string, string) from args
end sub

ありがとう。

4

1 に答える 1

2

いいえ、変数またはパラメーターからのコレクション初期化構文を使用して辞書を初期化することはできません。最初のスニペットで示した方法で割り当てた場合、コンパイラが食べるのは単なる構文糖です。

ただし、 を渡して、IDictionary(Of String, String)それを辞書のコンストラクターに使用できます。

Public sub Setup(dict As IDictionary(Of String, String))
   Dim d = new Dictionary(Of String, String)( dict )
End Sub

または、 を渡してIEnumerable(Of KeyValuePair(Of String, String))それを使用することもできますargs.ToDictionary(Function(kv) kv):

Public sub Setup(keyVals As IEnumerable(Of KeyValuePair(Of String, String)))
   Dim d = args.ToDictionary(Function(kv) kv)
End Sub

前者のアプローチはより効率的で、後者はより一般的です。許可すると、そのインターフェイスを実装するクラスIDictionary(Of TKey, TValue)が多数あるため、より多くの型を渡すことができるという利点があります。

于 2015-01-15T09:19:36.400 に答える