Mam proste kodu mały fragment, który jest frustrujące mnie:C# Operator warunkowy Nie oświadczenie?
HashSet<long> groupUIDs = new HashSet<long>();
groupUIDs.Add(uid)? unique++ : dupes++;
w czasie kompilacji, to generuje błąd:
Only assignment, call, increment, decrement, and new object expressions can be used as a statement
HashSet.Add
udokumentowaną powrócić bool, więc trójskładnikowej (?) Operator powinien zadziałać, i wygląda to na całkowicie zgodny z prawem sposób śledzenia liczby unikatowych i zduplikowanych elementów dodawanych do zestawu mieszającego.
Po sformatowaniu go jako "if-then-else" działa poprawnie.
Czy ktoś może wyjaśnić błąd i czy istnieje sposób, aby to zrobić jako prosty operator trójskładnikowy?
Preferuję zamiast tego statemnet. Zmienna dummy assign, którą sugerują niektóre odpowiedzi, tylko wprowadza zamieszanie. –
Należy również zwrócić uwagę, że ternaries są zwykle używane do wybierania wartości, a nie wybierania akcji. W twoim przypadku wybierasz, czy chcesz zwiększyć jedną z dwóch wartości. Tak więc w sensie bardziej semantycznym można użyć znaku "jeśli", ponieważ wybieramy akcję. – AaronLS