Hallo, ich habe drei Ints: Wert1, Wert2 und Wert3.
Wie kann ich am besten feststellen, ob sie alle gleich sind?
Ich habe es versucht:
%Vor%Aber das sagte:
Operator '==' kann nicht auf Operanden vom Typ 'bool' und 'int' angewendet werden.
Ich denke also, es vergleicht die ersten zwei, die einen booleschen Wert zurückgeben, den es mit dem dritten zu vergleichen versucht.
Ich könnte gehen:
%Vor%Aber das scheint unordentlich zu werden.
Hat jemand einen guten Vorschlag?
Ich habe meine ursprüngliche Antwort so geändert, dass sie eine allgemeinere Methode enthält, die nicht auf LINQ- oder Erweiterungsmethoden basiert. Ich denke, man kann davon ausgehen, dass diese Methode leistungsfähiger ist, da sie nicht die gesamte Liste auflisten muss, um die Eindeutigkeit zu bestimmen, wenn es Werte gibt, die sich zu einem frühen Zeitpunkt in der Liste unterscheiden.
%Vor%Das scheint mir gut zu sein. Der einzige Kommentar, den ich habe, ist, dass Sie eine "erklärende Variable" für die Gleichung einführen sollten. Neben der Erläuterung der Berechnung bietet die Rückgabe jetzt einen schönen Ort für einen Haltepunkt oder einen Trace-Punkt, wenn das Ergebnis überprüft wird.
%Vor%Wenn Sie nur nach Eleganz suchen (in Anbetracht Ihrer bereits haben eine Lösung, die nichts falsch daran hat), könnten Sie mit guten LINQ gehen. Dies kann drei oder mehr behandeln.
%Vor% Mit LINQ wäre es am besten, uns Any()
. Warum Any()
anstelle von All()
ist, weil All()
das Prädikat für alle Elemente der Sammlung testet, während Any()
beendet wird, sobald das Objekt mit dem Prädikat übereinstimmt.
Hier verwende ich einen umgekehrten Check. Ich suche nach jedem Gegenstand, der anders als der Gegenstand "a" sein wird. So bald es einen Unterschied findet, wissen wir, dass sie nicht alle gleich sind, so dass sie austreten und wieder wahr werden. Es werden also nur die Elemente "b", "c" und "d" getestet.
%Vor% Wenn Sie "gleich" überschreiben, können Sie daraus generische Erweiterungen erstellen, die wiederverwendbar sind und für mehrere Typen arbeiten können, solange sie IEqualityComparer<T>
Tags und Links c#