Wie Durchlaufen Wörterbuch ohne Verwendung von foreach

Ich bin nicht sicher, ob der Titel formuliert es auch so Leid.

Ich haben im Grunde ein Bündel von Elementen, die Liste von Zielen für eine Kommunikation. Ich legte Sie in ein Wörterbuch, aber ich bin offen für das bewegen auf eine andere Datenstruktur. Mein problem ist, dass ich ein Baum-wie Struktur, wo ein Schlüssel ist, einem ast und jeder Zweig hat viele Blätter. Sowohl der Zweig und die Blätter haben die Namen gespeichert in strings (nicht Ziffer).

private Dictionary < string, string[]> targets;

Für jedes element im Wörterbuch ich muss senden Sie eine Mitteilung, und wenn die Gegner Antworten, die ich gehen, um das nächste Ziel und von vorne beginnen. So nach suchen, bin ich konfrontiert mit diesen Dilemmata:

  • Ich nicht verwenden können, die üblichen foreach weil ich brauche, um den Zeiger im Speicher übergeben Sie zwischen den threads.
  • Seit Wörterbücher sind random-access ist es schwierig, halten einen Zeiger
  • Wenn ich eine Mitteilung bekommen ich soll überprüfen ob die Ursprünge sind von einem Ziel, so wie ich das Wörterbuch.enthält eine Methode für die.

Ich bin ziemlich neu bei C#, so die Antwort liegt wohl auf der Hand aber ich finde eine harte Zeit der Suche eine Datenstruktur, die genau meinen Anforderungen. Was wäre die einfachste Lösung? Kann jemand etwas empfehlen?

Danke.


BEARBEITEN

Ich glaube, mein post verwirrt viele, und Sie sind irgendwie stecken die Begriffe Zeiger und threads. Durch die threads, die ich nicht bedeuten, dass Sie parallel sind, einfach, dass ich nicht verwenden können, eine foreach oder eine Schleife, wie der nächste thread, der für die nächste iteration ausgelöst wird, durch die eingehende Kommunikation. Dieser Mechanismus kann nicht geändert werden, im moment, nur der iteration werden muss. Durch die Zeiger, die ich bezog sich nicht auf die memory-Zeiger, die oft in C, ich meinte nur etwas, dass die Punkte, wo Sie in einer Liste. Sorry, ich bin ein Java-Programmierer, so dass ich möglicherweise verwirrende Begriffe.

Bemerkte ich, dass die Enumerator ist oft vererbt und es kann verwendet werden, mit Strukturen, wie das Wörterbuch und die Verlinkte Liste. Beispiele, die ich finden sprechen Sie über diese sub-Struktur gekapselt ist, und zeigt foreach Schleifen als Beispiele.

Wäre es möglich, verwenden Sie GetEnumerator() in gewisser Weise, dass der enumerator erinnern würde, die aktuelle position, auch wenn der Zugriff durch einen anderen thread?

Ich mich auf den Weg um zu testen, diese auf meine eigene, aber wenn jeder input von erfahrenen Menschen ist immer willkommen!

  • Besser verwenden Sie diese gemeinsame Datenstruktur, die in einem read-only-Mode ( es werden keine neuen Knoten) wenn Sie möchten, Durchlaufen Sie in mehreren thread ...
  • Ich verstehe nicht ganz, was Sie versuchen zu erreichen. Wieso willst du Pointer anstatt Referenzen? Warum willst du die Verwendung von threads anstelle von asynchronen aufrufen?
InformationsquelleAutor Roast | 2010-01-01
Schreibe einen Kommentar