Durchlaufen Dictionary in C#
Ich erkennen, dass Sie nicht die Iteration über ein Dictionary in C# und Bearbeiten der zugrunde liegenden Wörterbuch, wie im folgenden Beispiel:
Dictionary<Resource, double> totalCost = new Dictionary<Resource, double>();
//Populate the Dictionary in here - (not showing code).
foreach (Resource resource in totalCost.Keys)
{
totalCost[resource] = 5;
}
Einer Weise, die ich Sie sehen, um dies zu beheben, machen Sie eine Liste, unterstützt von der Wörterbuch-Tasten, wie dieses:
Dictionary<Resource, double> totalCost = new Dictionary<Resource, double>();
//Populate the Dictionary in here - (not showing code).
foreach (Resource resource in new List(totalCost.Keys))
{
totalCost[resource] = 5;
}
Da bin ich nicht Bearbeiten die Tasten selbst, gibt es einen Grund, dass dies nicht getan werden sollte oder, dass es schlecht ist, dies zu entscheiden, als eine Lösung. (Ich merke, wenn ich war Bearbeiten Sie diese Schlüssel, dies könnte dazu führen, eine Menge Probleme).
Danke.
Edit: meine Feste code-Beispiel. Tut mir Leid, dass.
- Nicht das erste Stück code arbeiten?
- Du hast Recht. Tut mir Leid, dass - repariert es, um zu zeigen, das problem habe ich versucht zu beschreiben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
in deinen Beispiele scheint es nicht zu mich, wie Sie das Bearbeiten der Wörterbuch-Werte (oder Schlüssel)?
Im Allgemeinen Ihre Lösung, sieht gut aus, Sie könnten es ein bisschen weniger code wie folgt:
Können Sie mit einer Schleife über Wörterbücher mit über KeyValuePair Klasse.
Ihre erste Stück der code sieht in Ordnung für mich - du bist nicht Bearbeiten Sie das Wörterbuch überhaupt.
Hier ist eine weitere LINQ-esque version:
Oder, wenn 5 nicht ganz, was Sie wollen 🙂
(Hinweis: dies bedeutet nicht Bearbeiten die zugrunde liegende Wörterbuch, sondern es wird ersetzt durch eine neue)