Existe-t-il un meilleur moyen d'initialiser un Hastable dans .NET sans utiliser la méthode Add?
Je suis actuellement à l'initialisation d'une table de hachage de la manière suivante:
Hashtable filter = new Hashtable();
filter.Add("building", "A-51");
filter.Add("apartment", "210");
Je suis à la recherche d'une plus belle façon de le faire.
J'ai essayé quelque chose comme
Hashtable filter2 = new Hashtable() {
{"building", "A-51"},
{"apartment", "210"}
};
Cependant le code ci-dessus ne compile pas.
source d'informationauteur hectorsq
Vous devez vous connecter pour publier un commentaire.
Le code exact que vous avez posté:
Compile parfaitement en C# 3. Étant donné que vous avez signalé des problèmes de compilation, je devine que vous êtes à l'aide de C# 2? Dans ce cas, vous pouvez au moins faire cela:
En C# 3 il doit compiler fine comme ceci:
(Pas de C# expert)
C'est sucre syntaxique, et si c'est du sucre syntaxique que je veux pas avoir la cartographie (dans une table de hachage), belle et évidente:
Cependant je ne vois pas un réel besoin, pour cela, il n'y a pas beaucoup de mal, avec seulement d'avoir à appeler ajouter après l'initialisation.
(J'ai connu des gens à pirater autour avec le compilateur Java pour réaliser des choses similaires dans le passé pour Java (qui a causé de graves problèmes lors du déplacement à Java 5 quelques années plus tard), j'attends ce n'est pas une option pour C# si!)
Je pense que la véritable question qui se pose peut être sur le point imaginable constructeurs tels que:
HashTable ht = new HashTable(MyArray) ; //remplissage de la matrice
HashTable ht = new HashTable(MyDataTable) ; //remplissage de datatable
Autant que je sache, la réponse est "non", mais vous pouvez l'écrire vous-même. Je suppose que la raison que de telles méthodes ne sont pas dans la bibliothèque, c'est que le Tableau ou la DataTable doit être correctement formé. C'est pas une grosse perte car toute la mise en œuvre de ces méthodes serait probablement à l'aide de la méthode Add dans une boucle de toute façon.
Je n'avais aucune idée de C# 3.0
Hashtable table = new Hashtable {{1, 1}, {2, 2}};
de dresser.De toute façon, le pauvre sa mise en œuvre:
Meh, vous pouvez étendre la classe Hashtable:
Puis à partir d'une Application Console:
:
A-51
210
nerf Druides
cela a été fait rapidement, donc il peut la bombe, dans certaines situations, mais encore une fois..