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

cdm*_*kay 7 vb.net dictionary

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

在Java中,我只想这样做:

Collections.<K,V>emptyMap()
Run Code Online (Sandbox Code Playgroud)

我如何在VB.NET中进行等效操作?

(我使用的是.NET 3.5).

ito*_*son 9

.NET中没有预装的空字典.要创建一个空字典,只需转到New Dictionary().

但是,我相信您不会被允许使用此可选参数的默认值,因为它无法在编译时计算并放入DefaultValueAttribute.相反,你需要重载函数:有一个带有字典参数的重载,有一个没有.后者只是如上所述新建一个空字典,并调用第一个重载.


Jar*_*Par 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
Run Code Online (Sandbox Code Playgroud)