如何在VB.NET中为可选参数创建一个空字典

时间:2009-04-09 05:14:46

标签: vb.net dictionary

基本上,我有一个具有可选字典参数的函数。由于它是可选的,它需要一个默认值,我想将它设置为空字典而不是Nothing。我该怎么做?

在Java中,我只想这样做:

Collections.<K,V>emptyMap()

如何在VB.NET中完成等效工作?

(我正在使用.NET 3.5)。

3 个答案:

答案 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);