问题
Is it possible to create and initialise a System.Collections.Generic.Dictionary object with String key/value pairs in one statement?
I'm thinking along the lines of the constructor for an array of Strings..
e.g.
Private mStringArray As String() = {"String1", "String2", "etc"}
In case this is turns out to be a syntactic sugar kind of thing, I'd prefer an answer that I can use in .Net 2.0 (Visual Studio 2005), and Visual Basic - though I'm curious if it's possible at all so don't let that put you off ;o)
回答1:
I don't think there is a way to do this out of the box in VB.NET 2, however you can extend the generic dictionary to make it work the way you want it to.
The console app below illustrates this:
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:
Like this:
Dim myDic As New Dictionary(Of String, String) From {{"1", "One"}, {"2", "Two"}}
回答3:
Try this syntax:
Dictionary<string, double> dict = new Dictionary<string, double>()
{
{ "pi", 3.14},
{ "e", 2.71 }
};
But that may require C# 3 (.NET 3.5)
回答4:
I know this is an old post but this question frequently comes up. If
Here is a way to declare & initialize a dictionary in one statement:
Private __sampleDictionary As New Dictionary(Of Integer, String) From
{{1, "This is a string value"}, {2, "Another value"}}
来源:https://stackoverflow.com/questions/318530/is-it-possible-to-initialise-a-new-system-collections-generic-dictionary-with-st