如何在实例化时将值插入VB.NET字典?

如何在实例化时将值插入VB.NET字典?,vb.net,dictionary,c#-to-vb.net,Vb.net,Dictionary,C# To Vb.net,有没有一种方法可以在创建VB.NET字典时将值插入其中?我可以,但不想,为每个项目执行dict.Add(int,“string”) 基本上,我想用VB.NET var dictionary = new Dictionary<int, string> { {0, "string"}, {1, "string2"}, {2, "string3"} }; var字典=新字典 { {0,“字符串”}, {1,“string2”

有没有一种方法可以在创建VB.NET字典时将值插入其中?我可以,但不想,为每个项目执行dict.Add(int,“string”)

基本上,我想用VB.NET

var dictionary = new Dictionary<int, string>
    {
        {0, "string"},
        {1, "string2"},
        {2, "string3"}
    };
var字典=新字典
{
{0,“字符串”},
{1,“string2”},
{2,“string3”}
};

如果使用Visual Studio 2010或更高版本,则应使用
FROM
关键字,如下所示:

Dim days = New Dictionary(Of Integer, String) From {{0, "string"}, {1, "string2"}}
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 Studio的早期版本,并且需要经常这样做,那么您可以从Dictionary类继承并自己实现它

它可能看起来像这样:

Dim days = New Dictionary(Of Integer, String) From {{0, "string"}, {1, "string2"}}
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

您看到的是C#的一个特性,称为“集合初始值设定项”。VB也有这个功能,但在VisualStudio2008发布之前就被删除了。它现在对您没有帮助,但预计将在VisualStudio2010中提供。同时,您必须以老式的方式进行操作—调用新实例的
.Add()
方法。

这是2010年以前的Visual Basic版本所不可能实现的

在VB2010及更高版本中,可以使用
FROM
关键字

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


正如Joel Coehoorn在他的回答中所说的,FROM关键字似乎已经从VB2008中删除。我清楚地记得我以前用过这个,但也许我只尝试过数组序列化器。好。以下是我从中获得信息的链接:@BrianWebster谢谢!更新响应,以反映当前和以前的方法。