Initialiser le Dictionnaire statique lors de la création en C++/CLI
Aujourd'hui j'ai vu le code C# qui crée dictionnaire statique et l'initialise:
public static readonly Dictionary<string, string> dict = new Dictionary<string, string>()
{
{"br","value1"},
{"cn","value2"},
{"de","value3"},
};
mais quand j'ai décidé d'écrire le même code pour C++/CLI, une erreur s'est produite. Voici ma tentative:
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"},
};
Puis-je faire cela et si oui, comment?
double possible de C++ CLI syntaxe d'initialiseur de Collection
OriginalL'auteur Viktor Apoyan | 2011-05-16
Vous devez vous connecter pour publier un commentaire.
C# 3.0 et versions ultérieures permet aux utilisateurs de définir un "initialiseur"; pour les collections, c'est une série d'éléments, qui pour les Dictionnaires est simplifié pour les clés et les valeurs. C++.NET à ma connaissance, n'a pas cette fonctionnalité du langage. Voir cette question: il est très similaire: Initialisation de tableau en C++Managé. Les initialiseurs de tableau sont les SEULS initialiseur en C++; d'autres collections ne proposent pas en C++.
Fondamentalement, votre principale consiste à déclarer un constructeur statique et d'initialiser votre dictionnaire.
OriginalL'auteur KeithS
Ce type de
Dictionary<T>
d'initialisation est une fonctionnalité qui n'est pas de la classe elle-même, mais de le compilateur C#. Il le traduit dans des déclarations séparées pour la création de laDictionary<T>
objet, et la création et l'ajout de chaque paire clé/valeur. Je ne crois pas que le compilateur C++ offre les mêmes capacités.À droite, il devra être fait différemment.
En gros, oui. C'est une fonctionnalité du langage C# non disponible dans le C++.
"Bon, il faudrait faire différemment", mais est-il un moyen ?
Voir Keith réponse à un lien vers quelque chose de similaire pour les tableaux. Pour les dictionnaires, je pense que vous auriez à faire de la création et plus, ligne par ligne.
OriginalL'auteur dlev
Mon approche est (.NET 4.5):
OriginalL'auteur MrHIDEn
C'est possible! 🙂
Pas simple, mais avec une petite fonction d'assistance, vous pouvez créer et initialisation d'un dictionnaire dans une ligne de code:
Testé, de travail.
OriginalL'auteur Tobias Knauss