有没有一种方便的方法可以传递函数参数来初始化 Vb.net 字典(字符串,字符串)



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

谢谢。

不可以,不能使用变量或参数的集合初始值设定项语法初始化字典。它只是编译器吃的语法糖,如果你按照你在第一个代码段中显示的方式分配它。

但是,您可以传递一个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)的优点是可以传递更多类型,因为有许多类实现该接口。

最新更新