基本上,我有一个具有可选字典参数的函数。由于它是可选的,它需要一个默认值,我想将它设置为空字典而不是Nothing。我该怎么做?
在Java中,我只想这样做:
Collections.<K,V>emptyMap()
如何在VB.NET中完成等效工作?
(我正在使用.NET 3.5)。
答案 0 :(得分:9)
.NET中没有预先封装的空字典。要创建一个空字典,只需转到New Dictionary()。
但是,我相信您不会被允许使用此可选参数的默认值,因为它无法在编译时计算并放入DefaultValueAttribute。相反,你需要重载函数:有一个带有字典参数的重载,有一个没有。后者只是如上所述新建一个空字典,并调用第一个重载。
答案 1 :(得分:5)
无法将空字典指定为VB.Net中参数的默认值。 VB.Net仅支持可以在MetaData中编码的值,并且创建Dictionary的新实例不是其中之一。
您拥有的一个选项是拥有一个默认为Nothing的可选值。在Nothing的情况下创建一个空字典。例如。
Public Sub SomeMethod(Optional ByVal map as Dictionary(Of Key,Value) = Nothing)
if map Is Nothing Then
map = new Dictionary(Of Key,Value)
ENd If
...
End Sub
答案 2 :(得分:2)
根据目的,如果创建容量为0的意图为空的字典,则可能会节省更多资源(即在内存方面):
var empty = new Dictionary<string, string>(0);