Как вставить значения в словарь VB.NET при создании экземпляра?

Есть ли способ, которым я могу вставить значения в словарь VB.NET при его создании? Я могу, но не хочу делать dict.Add(int, "string") для каждого элемента.

По сути, я хочу сделать "Как вставить значения в C# словарь при создании экземпляра?" с VB.NET.

var dictionary = new Dictionary<int, string>
    {
        {0, "string"},
        {1, "string2"},
        {2, "string3"}
    };

3 ответа

Решение

Если вы используете Visual Studio 2010 или более позднюю версию, вы должны использовать FROM ключевое слово как это:

Dim days = New Dictionary(Of Integer, String) From {{0, "string"}, {1, "string2"}}

См.: http://msdn.microsoft.com/en-us/library/dd293617(VS.100).aspx

Если вам нужно использовать предыдущую версию Visual Studio и делать это часто, вы можете просто унаследовать класс Dictionary и реализовать его самостоятельно.

Это может выглядеть примерно так:

Public Class InitializableDictionary
    Inherits Dictionary(Of Int32, String)

    Public Sub New(ByVal args() As KeyValuePair(Of Int32, String))
        MyBase.New()
        For Each kvp As KeyValuePair(Of Int32, String) In args
            Me.Add(kvp.Key, kvp.Value)
        Next
    End Sub

End Class

Это не возможные версии Visual Basic до 2010 года.

В VB2010 и позже вы можете использовать FROM ключевое слово.

Dim days = New Dictionary(Of Integer, String) From {{0, "Sunday"}, {1, "Monday"}}

Ссылка

http://msdn.microsoft.com/en-us/library/dd293617(VS.100).aspx

То, на что вы обращаете внимание, - это функция C#, называемая "инициализаторы коллекции". Эта функция существовала и для VB, но была отключена до выпуска Visual Studio 2008. Она сейчас вам не поможет, но ожидается, что она будет доступна в Visual Studio 2010. Тем временем вам придется сделай это по старинке - позвони .Add() метод вашего нового экземпляра.

Другие вопросы по тегам