У меня есть простой фрагмент кода, который меня разочаровывает:
HashSet<long> groupUIDs = new HashSet<long>();
groupUIDs.Add(uid)? unique++ : dupes++;
Во время компиляции он генерирует ошибку:
В качестве оператора
можно использовать только присвоение, вызов, приращение, декремент и новые объектные выражения.
HashSet.Add
задокументирован, чтобы вернуть bool, поэтому должен работать троичный оператор (?),
и это выглядит как вполне законный способ отслеживать количество уникальных и повторяющихся элементов, которые я добавляю в хэш-набор.
Когда я переформатирую его как if-then-else, он отлично работает.
Может кто-нибудь объяснить ошибку, и если есть способ сделать это как простой тернарный оператор?