Добавить ключи/значения в словарь при объявлении
Сегодня очень легко. В С# его:
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) {{"",""}}
Ответы
Ответ 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 для словаря.