J'ai une question rapide. Y a-t-il un moyen de faire une boucle facile via Merci d'avance. P> system.collections.generic.dictionary code> via pour code> instruction en c #? P>
9 Réponses :
Vous pouvez utiliser Foreach:
Dictionary<string,string> dictionary = new Dictionary<string,string>();
// ...
foreach (KeyValuePair<string,string> kv in dictionary)
{
string key = kv.Key;
string value = kv.Value;
}
En effet, il a été fixé entre-temps
Non, pour code> est principalement destiné aux collections avec des indices.
Vous pouvez foreach code> dessus facilement, cependant. P>
Vous pouvez boucler sur les touches ou les valeurs p> ou les deux comme philippe montre p> p> P> P> P> >
Cela ne compilera pas ne peut pas appliquer indexation avec [] à une expression de type 'system.collections.generic.dictionary
Il cherchait: compter au lieu de la longueur, qui ne s'applique qu'aux tableaux «normaux»
@Oxymoron: Même lorsque vous utilisez Nombre code>, essayez d'accéder aux éléments dans la collection code> Collection par index ( [I] code>) brisera toujours la construction (Quelle était l'erreur que je faisais appelé dans mon commentaire).
Si vous utilisez NET 3.5 ou version ultérieure, vous pouvez utiliser LINQ et un Prédecate pour localiser une valeur ou des valeurs spécifiques. Les dictionnaires ne stockent pas nécessairement leurs paires keyvalue dans l'ordre (soit par ordre d'entrée ni ordre clé). P>
Il y a plusieurs façons.
Boucle via les touches: boucle via des valeurs: p> boucle via des paires: p>
Philippe's a eu pour foreach code>, bien que je le simplifie habituellement: foreach (var pair in dictionary)
{
var key = pair.Key;
var value = pair.Value;
}
L'utilisation de «var» est terriblement mauvaise pratique en général.
@Nyerguds C'est une déclaration terriblement balancée et objective. Il est également incorrect - le mot clé var code> est absolument essentiel dans toutes les circonstances où vous utilisez des types anonymes. En outre, dans ce cas, l'astucieux n'a pas spécifié les types génériques sur le dictionnaire et je trouve (dans le monde réel) que vous devez parfois modifier les types. Mon utilisation de var code> rend le type exact du dictionnaire sans importance et est le code qui fonctionne indépendamment des types génériques. Il y a beaucoup d'endroits où je ne laisserais pas un var code> via une critique de code, mais dans un exemple d'extrait, c'est bien.
pas de manière raisonnable, non. Vous pourrait em> utiliser l'extension LINQ ... mais je ne vois vraiment pas le point. Il suffit d'utiliser l'approche ellementat code>: de régulier code>. Si vous avez besoin de suivre une trace d'un index tout en itération, vous pouvez le faire "sur le côté": p>
Cela peut être fait, mais c'est un peu stupide imo la seule chose gagnée par ceci est un index (assez inutile), et si c'est l'objectif réel, vous sont mieux servis par quelque chose comme ceci: p>
S'il ne doit pas nécessairement être un "pour" -Loop, peut-être utiliser le Dictionary.getenumerator Methode avec un" tandis que "-Loop est une option - il est assez facile iMho em>: Code-Snippet de C # Dictionnaire Getenumerator P> P>
Pourquoi feriez-vous cela en utilisant un foreach code>? En outre, vous ne disposez pas de l'énumeur.
Le code-snippet provient de dotnetperls.com/dictionary-getenumerator , ce n'est pas mon code. Et selon ce site Web, l'utilisation de l'énumérateur a une meilleure performance que 'foreach' - c'est pourquoi je pense que cela vaut la peine de mentionner l'énumérateur
Peu importe si c'est votre code ou non. Ce n'est pas un bon code et vous devriez le réparer ou ne pas l'utiliser. Il est important de disposer de l'énumérateur; Si vous voulez énumérer explicitement, vous devez le faire. Quant au mieux qu'un foreach code>, c'est exactement ce qu'est un foreach code> va faire. foreach code> est juste du sucre syntaxique pour cela (sauf que foreach code> le fait-il correctement, contrairement à votre code). Un foreach code> ne sera pas plus lent; ça fait la même chose.
Qu'essayez-vous de faire? Vous recherchez une paire de valeur ou de keyvalue spécifique?
Je suppose que vous voulez dire pour acheter plutôt que pour?