ich ein einfaches kleines Codefragment, die mich ist frustrierend:C# Bedingter Operator Keine Aussage?
HashSet<long> groupUIDs = new HashSet<long>();
groupUIDs.Add(uid)? unique++ : dupes++;
Beim Kompilieren erzeugt er den Fehler:
Only assignment, call, increment, decrement, and new object expressions can be used as a statement
HashSet.Add
dokumentiert ist ein bool zurück, so die ternäre (?) operator sollte funktionieren, und dies sieht wie eine völlig legitime Möglichkeit aus, die Anzahl der eindeutigen und doppelten Elemente zu verfolgen, die ich zu einem Hash-Set hinzufüge.
Wenn ich es als if-then-else neu formatiere, funktioniert es gut.
Kann jemand den Fehler erklären, und wenn es eine Möglichkeit gibt, dies als ein einfacher ternärer Operator zu tun?
Ich bevorzuge stattdessen das if-StatMnet. Die Dummy-Zuweisungsvariable, die einige Antworten vorschlagen, fügt nur Verwirrung hinzu. –
Auch Notiz ternärs werden normalerweise verwendet, um einen Wert zu wählen, wählen Sie keine Aktion. In Ihrem Fall wählen Sie, ob Sie einen von zwei Werten erhöhen möchten. Es macht also mehr semantischen Sinn, ein if-else zu verwenden, da Sie eine Aktion wählen. – AaronLS