Добавить ключи / значения в словарь при объявлении - PullRequest
61 голосов
/ 22 сентября 2010

Очень легко сегодня, я думаю. В C # это:

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) {{"",""}}

Ответы [ 4 ]

99 голосов
/ 22 сентября 2010

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

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

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

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

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;
10 голосов
/ 22 сентября 2010

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

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

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

9 голосов
/ 19 сентября 2012

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

C # :

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"}}}

Круто, хаа:)

1 голос
/ 22 сентября 2010

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

...