que tienen un fragmento pequeño y sencillo código que me está frustrando:Operador condicional C# ¿No es una declaración?
HashSet<long> groupUIDs = new HashSet<long>();
groupUIDs.Add(uid)? unique++ : dupes++;
En tiempo de compilación, se genera el error:
Only assignment, call, increment, decrement, and new object expressions can be used as a statement
HashSet.Add
se documenta para devolver un bool, por lo que el ternario (?) el operador debería funcionar, y esto parece una forma completamente legítima de rastrear la cantidad de elementos únicos y duplicados que agrego a un conjunto de hash.
Cuando lo vuelvo a formatear como un if-then-else, funciona bien.
¿Alguien puede explicar el error, y si hay una manera de hacerlo como un simple operador ternario?
Prefiero el if statemnet en su lugar. La variable de asignación ficticia que sugieren algunas respuestas solo agrega confusión. –
También tenga en cuenta que los ternarios se usan generalmente para elegir un valor, no para elegir una acción. En su caso, usted está eligiendo si incrementar uno o dos valores. Por lo tanto, tiene más sentido semántico usar un if-else ya que está eligiendo una acción. – AaronLS