是否有一种方便的方法来传递函数参数来初始化Vb.net中的Dictionary(字符串,字符串)

时间:2015-01-15 08:33:45

标签: vb.net dictionary initialization convenience-methods

我们可以在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

感谢。

1 个答案:

答案 0 :(得分: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)的优势在于您可以传递更多类型,因为有many classes实现了该接口。