有没有一种方便的方法来传递函数参数来初始化 Vb.net 中的 Dictionary(of string,string)
Is there a handy way to pass function arguments to initialize a Dictionary(of string,string) in 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)
的好处是您可以传递更多类型,因为有 many classes 实现了该接口。
我们可以在 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)
的好处是您可以传递更多类型,因为有 many classes 实现了该接口。