Comment dresser une table de hachage pour foreach en c#
Je suis en train de dresser une table de hachage qui est définie comme:
private Hashtable keyPairs = new Hashtable();
foreach(SectionPair s in keyPairs)
{
if(s.Section == incomingSectionNameVariable)
{
bExists = true;
break;
}
}
//more stuff here
Mais j'obtiens une erreur à partir de Visual Studio 2013, "InvalidCastException était non gérée". À l'aide d'un Dictionnaire, nonobstant, je suis intéressé à savoir pourquoi je reçois ce message d'erreur.
Êtes-vous sûr que tous les éléments de
keyPairs
peut être castée pour SectionPair
? Aussi, vous ne devez pas utiliser non générique Hashtable
. Déplacer génériques HashSet<T>
pour obtenir le type de compilation de sécurité.OriginalL'auteur Su Llewellyn | 2017-01-05
Vous devez vous connecter pour publier un commentaire.
Comme vous pouvez le lire dans le Remarques section de la
Hashtable
classe, les objets que vous énumérez sontDictionaryEntry
s. Ainsi, vous aurez à le réécrire quelque chose comme:Un
DictionaryEntry
a unKey
etValue
élément (qui sont bien sûr les clés et les valeurs dans laHashtable
. Les deux sontObject
s depuis unHashtable
n'est pas générique et donc le compilateur ne peut pas savoir ce que le type de laKey
et/ouValue
est.Je vous conseille cependant d'utiliser un
Dictionnaire<TKey,TValue>
depuis ici, vous pouvez spécifier le type de laKey
etValue
. Dans ce cas, un exemple pourrait ressembler à:Mais ici
kvp.Key
sera unstring
de sorte que vous n'avez pas à jeter et il est plus sûr à utiliser.OriginalL'auteur Willem Van Onsem