2009-11-03 11 views

Antwort

54

Bei der Verwendung von Visual Studio 2010 oder später sollten Sie die FROM Schlüsselwort wie folgt verwenden:

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

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

Wenn Sie eine frühere Version von Visual Studio verwenden müssen und Sie Dies müssen Sie häufig von der Dictionary-Klasse übernehmen und selbst implementieren.

Es könnte wie folgt aussehen:

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 
+0

, das funktioniert. Danke, – onsaito

+0

Diese Antwort ist jetzt falsch. –

+1

@BrianWebster danke! aktualisierte Antwort, um sowohl aktuelle als auch frühere Ansätze zu berücksichtigen. – brendan

5

Was Sie sehen, ist eine Funktion von C# „Auflistungsinitialisierer“ genannt. Das Feature existierte auch für VB, wurde aber vor der Veröffentlichung von Visual Studio 2008 entfernt. Es hilft Ihnen momentan nicht, aber es wird erwartet, dass es in Visual Studio 2010 verfügbar ist. In der Zwischenzeit müssen Sie tun Sie es auf die altmodische Art und Weise — rufen Sie die .Add() Methode Ihrer neuen Instanz an.

25

Dies ist nicht möglich Versionen von Visual Basic vor 2010

In VB2010 und später können Sie das FROM Schlüsselwort verwenden.

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

Referenz

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

+0

Wie Joel Coehoorn in seiner Antwort sagt, scheint das FROM-Schlüsselwort aus VB2008 herausgezogen worden zu sein. Ich kann mich noch gut erinnern, dass ich das schon einmal benutzt habe, aber vielleicht habe ich nur Array-Inizialiser ausprobiert. Gut. Hier sind die Links, von denen ich meine Informationen bekommen habe: http://msdn.microsoft.com/en-us/library/dd293617(VS.100).aspx – Stefan

+0

Dies ist, was für mich sauber und mit Referenz +1 funktioniert hat –

Verwandte Themen