2010-09-22 3 views
50

Очень легко сегодня, я думаю. В 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) {{"",""}} 

ответ

81

Это возможно в 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; 
+0

отлично! Интересно, как это происходит, он сначала создает двумерный массив, а затем копирует его в словарь? – vulkanino

+0

Dern. Значит, ты говоришь, что, поскольку я использую VS2008, я не могу это сделать? Это воняет. – XstreamINsanity

+1

Yeap, немного вонючий :-) Время обновления. –

0

Там нет конструктор взять KeyValuePair для словаря.

8

Это то же самое, использовать От ключевого слова:

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

Однако, это требует версии 10, доступной в VS2010.

7

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

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

В.Б.:

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

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

Смежные вопросы