Как создать пустой словарь для необязательного аргумента в VB.NET

в принципе, у меня есть функция, которая имеет необязательный аргумент словарь. Поскольку это необязательно, ему нужно значение по умолчанию, и я хотел бы установить его в пустой словарь вместо ничего. Как мне это сделать?

в Java, я бы просто сделать это:

Collections.<K,V>emptyMap()

Как мне сделать эквивалент в VB.NET?

(Я использую .NET 3.5).

3 ответов


невозможно указать пустой словарь в качестве значения по умолчанию для параметра в VB.Net - ... VB.Net поддерживает только значения, которые могут быть закодированы в метаданных и создание нового экземпляра словаря не является одним из них.

один из вариантов, который у вас есть, - это иметь необязательное значение по умолчанию 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

нет предварительно консервированного пустого словаря .Сеть. Чтобы создать пустой словарь, просто перейдите в новый словарь ().

однако я считаю, что вам не будет разрешено использовать это значение по умолчанию необязательного аргумента, потому что его нельзя вычислить во время компиляции и поместить в DefaultValueAttribute. Вместо этого вам нужно будет перегрузить функцию: есть одна перегрузка, которая принимает аргумент словаря, и одна, которая этого не делает. Последний просто обновит пустой словарь как и выше, назовем первую перегрузку.


в зависимости от цели, это может быть несколько более ресурсосберегающим (т. е. с точки зрения памяти), если предназначенный для пустого словаря создается с емкостью 0:

var empty = new Dictionary<string, string>(0);