是否可以在一个语句中使用String键/值对创建和初始化System.Collections.Generic.Dictionary
对象?
我正在思考一个Strings数组的构造函数。
e.g。
Private mStringArray As String() = {"String1", "String2", "etc"}
如果事实证明这是syntactic sugar类的事情,我更喜欢我可以在.Net 2.0(Visual Studio 2005)和Visual Basic中使用的答案 - 尽管我很好奇如果可能的话,那就不要让那个让你失望; o)
答案 0 :(得分:77)
像这样:
Dim myDic As New Dictionary(Of String, String) From {{"1", "One"}, {"2", "Two"}}
答案 1 :(得分:7)
我认为在VB.NET 2中没有办法解决这个问题,但你可以扩展通用字典,使其按照你想要的方式工作。
下面的控制台应用程序说明了这一点:
Imports System.Collections.Generic
Module Module1
Sub Main()
Dim items As New FancyDictionary(Of Integer, String)(New Object(,) {{1, "First Item"}, {2, "Second Item"}, {3, "Last Item"}})
Dim enumerator As FancyDictionary(Of Integer, String).Enumerator = items.GetEnumerator
While enumerator.MoveNext
Console.WriteLine(String.Format("{0} : {1}", enumerator.Current.Key, enumerator.Current.Value))
End While
Console.Read()
End Sub
Public Class FancyDictionary(Of TKey, TValue)
Inherits Dictionary(Of TKey, TValue)
Public Sub New(ByVal InitialValues(,) As Object)
For i As Integer = 0 To InitialValues.GetLength(0) - 1
Me.Add(InitialValues(i, 0), InitialValues(i, 1))
Next
End Sub
End Class
End Module
答案 2 :(得分:5)
试试这个语法:
Dictionary<string, double> dict = new Dictionary<string, double>()
{
{ "pi", 3.14},
{ "e", 2.71 }
};
但这可能需要C#3(.NET 3.5)
答案 3 :(得分:-1)
我知道这是一个老帖子,但这个问题经常出现。如果
这是一种声明&amp;在一个语句中初始化字典:
Private __sampleDictionary As New Dictionary(Of Integer, String) From
{{1, "This is a string value"}, {2, "Another value"}}