Initialisieren einer statischen Wörterbuch während der Erstellung in C++/CLI
Heute habe ich aus der C# - code, erstellt statische Wörterbuch und initialisiert es:
public static readonly Dictionary<string, string> dict = new Dictionary<string, string>()
{
{"br","value1"},
{"cn","value2"},
{"de","value3"},
};
aber wenn ich beschlossen, schreiben Sie den gleichen code für C++/CLI, ist ein Fehler aufgetreten. Hier ist mein Versuch:
static System::Collections::Generic::Dictionary<System::String^, System::String^>^ dict = gcnew System::Collections::Generic::Dictionary<System::String^, System::String^>( )
{
{"br","value1"},
{"cn","value2"},
{"de","value3"},
};
Kann ich dies tun, und wenn ja, wie?
- mögliche Duplikate von C++ - CLI-Collection-Initialisierer-syntax
Du musst angemeldet sein, um einen Kommentar abzugeben.
C# 3.0 und höher können Benutzer definieren eine "Initialisierung"; für Sammlungen, die eine Reihe von Elementen, die für Wörterbücher ist gestrafft, um Schlüssel und Werte. C++.NET meines Wissens nicht über diese Sprache verfügen. Siehe diese Frage: es ist sehr ähnlich: Array-Initialisierung in Managed C++. Array-Initialisierungen sind NUR solche Initialisierung in C++; andere Sammlungen bieten Sie Ihnen nicht in C++.
Grundsätzlich ist deine wichtigste option ist die Deklaration einer statischen Konstruktor und initialisieren Sie Ihr Wörterbuch in es.
Diese Art von
Dictionary<T>
Initialisierung ist ein feature, nicht der Klasse selbst, sondern der C# - compiler. Es übersetzt Sie in separaten Anweisungen für die Erstellung derDictionary<T>
Objekt, und die Schaffung und Ergänzung jedes Schlüssel/Wert-paar. Ich glaube nicht, dass der C++ - compiler bietet die gleichen Funktionen.Mein Ansatz ist (.NET 4.5):
Ist es möglich! 🙂
Nicht geradlinig, aber mit einem kleinen helper-Funktion können Sie erstellen und init ein Wörterbuch in einer Zeile code:
Getestet, funktioniert.