Подтвердить что ты не робот

Добавить ключи/значения в словарь при объявлении

Сегодня очень легко. В С# его:

Dictionary<String, String> dict = new Dictionary<string, string>() { { "", "" } };

Но в vb следующее не работает.

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) (("",""))

Я уверен, что есть способ добавить их в объявление, но я не уверен, как это сделать. И да, я хочу добавить их в объявление, а не в другое время.:) Так что, надеюсь, это возможно. Спасибо всем.

Я также пробовал:

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) ({"",""})

А...

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) {("","")}

А...

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) {{"",""}}
4b9b3361

Ответ 1

Это возможно в VB.NET 10:

Dim dict = New Dictionary(Of Integer, String) From {{ 1, "Test1" }, { 2, "Test1" }}

К сожалению, IIRC VS 2008 использует компилятор VB.NET 9, который не поддерживает этот синтаксис.

И для тех, кто может быть заинтересован здесь, что происходит за кулисами (С#):

Dictionary<int, string> VB$t_ref$S0 = new Dictionary<int, string>();
VB$t_ref$S0.Add(1, "Test1");
VB$t_ref$S0.Add(2, "Test1");
Dictionary<int, string> dict = VB$t_ref$S0;

Ответ 2

Это то же самое, используйте ключевое слово From:

    Dim d As New Dictionary(Of String, String) From {{"", ""}}

Однако для этого требуется версия 10 языка, доступная в VS2010.

Ответ 3

Здесь классный перевод: вы также можете иметь общий словарь строк и строкового массива.

С#:

private static readonly Dictionary<string, string[]> dics = new Dictionary<string, string[]>
        {
            {"sizes", new string[]   {"small", "medium", "large"}},
            {"colors", new string[]  {"black", "red", "brown"}},
            {"shapes", new string[]  {"circle", "square"}}
        };

VB:

Private Shared ReadOnly dics As New Dictionary(Of String, String()) From { _
 {"sizes", New String() {"small", "medium", "large"}}, _
 {"colors", New String() {"black", "red", "brown"}}, _
 {"shapes", New String() {"circle", "square"}}}

Прохладный haa:)

Ответ 4

Нет конструктора, чтобы использовать KeyValuePair для словаря.