Gibt es ein Sprachkonstrukt in C#, das die Abstraktion der Schleifen- (oder anderer) "äußeren" Verarbeitung ermöglicht?Aussortieren der Skelettverarbeitung (C#)
Ich habe eine ziemlich geradlinig verschachtelte Struktur (Listen von Listen von Ints sagen) und den Code, um durch jede der niedrigsten Ebenen zu "drehen". Der Code ist nicht kompliziert (noch nicht besonders lang), aber ich habe mehrere Funktionen, die unabhängig voneinander mit der untersten Ebene "interagieren" müssen und nur das Schleifenskelett kopiert haben, um dies zu tun. Es scheint mir eine Verschwendung.
foreach (list in outerlists)
... a few random lines of structure traversing
foreach (int in list)
do something simple to int
Dies ist offensichtlich eine abgespeckte Beispiel, aber meine reale Welt ist ähnlich - ich am Ende immer wieder die äußere Verarbeitung Kopieren bis zu relativ wenigen inneren Linien der Arbeit verändern werden.
Meine vorläufige Lösung besteht darin, eine "processing" -Methode zu erstellen, die die Schleifen enthält und einen Enumeration (oder etwas) -Parameter abruft, um zu bestimmen, welche innere Funktion aufgerufen werden soll. Dann setzen Sie eine switch-Anweisung auf die "tun etwas" Ebene, die die richtige Unterfunktion aufruft.
Bin ich auf dem richtigen Weg oder gibt es einen einfacheren Weg? Ich könnte die switch-Anweisung mit einem Konzept von Funktionszeigern loswerden (übertrage einfach einen Funktionszeiger in die Verarbeitungsschleife und rufe es auf der do-was-Ebene auf), weiß aber nicht, ob das in C# möglich ist.
Danke für die Antwort und das Beispiel (Sorry @Oded - der Beispielcode hat den Unterschied gemacht). Ich hatte die Delegierten etwas angeschaut, aber alle Tutorials und Hilfedateien ließen sie in die Ereignisse eingebunden erscheinen, also war ich weitergezogen. Das ist sehr hilfreich. – ktharsis