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 回答