Ich habe die folgende Liste von distinct Strings:
"A"
"B"
"C"
Wenn ich den Gegenstand nach A haben möchte, bekomme ich B. Nach B bekomme ich C. Nach C bekomme ich A. Momentan habe ich den folgenden Code, aber aus irgendeinem Grund fühlt es sich für mich an, dass es einen besseren Weg gibt um darüber zu gehen (vielleicht?).
%Vor%Ich bin definitiv offen für eine LINQ-artige Art, dies auch zu tun:)
Die Lösung, die Sie haben, ist funktional korrekt, aber die Leistung lässt ein wenig zu wünschen übrig. Wenn Sie mit einer Listenstilstruktur arbeiten, würden Sie normalerweise erwarten, dass GetNext
ein Ergebnis in O (1) -Zeit zurückgibt, aber diese Lösung ist O (N).
Der erste Aufruf von CreateAt
ist hier O (N), aber nachfolgende Aufrufe von GetNext
sind O (1).
Ich kann eine Optimierung sehen, wenn Sie den aktuellen Index statt der aktuellen Zeichenfolge verfolgen, aber dazu müsste die Liste der Elemente korrigiert werden, d. h. nicht ändern.
Sie könnten auch return items[(index + 1) % items.Count];
Sonst sieht dieser Code für mich gut aus, aber vielleicht hat jemand eine cleverere Lösung.
LINQ ist hier nicht das geeignete Werkzeug.
Es klingt, als wäre eine LinkedList<T>
hier die bessere Sammlung:
Hier sind die Vor- und Nachteile einer LinkedList im Vergleich zu einer Liste.
Tags und Links c# enumeration linq list