visual usar ternario sharp relacionales operadores operador miembros jerarquia condicionales condicional como asignacion and acceso c# operators nullable

usar - El operador+= con tipos anulables en C#



operadores de asignacion en c# (1)

En c #, si escribo

int? x = null; x += x ?? 1

Espero que esto sea equivalente a:

int? x = null; x = x + x ?? 1

Y así, en el primer ejemplo, x contendría 1 como en el segundo ejemplo. Pero no lo hace, contiene nulo. El operador + = no parece funcionar en tipos anulables cuando no se han asignado. ¿Porqué debería ser este el caso?

Edición : como se señaló, es porque null + 1 = null y precedencia del operador. En mi defensa, creo que esta línea en MSDN es ambigua:

Los tipos nulables también pueden utilizar los operadores unarios y binarios predefinidos y cualquier operador definido por el usuario que exista para tipos de valor. Estos operadores producen un valor nulo si [cualquiera de] los operandos son nulos; de lo contrario, el operador utiliza el valor contenido para calcular el resultado.


Aquí está la diferencia entre las dos afirmaciones:

x += x ?? 1 x = (x + x) ?? 1

El segundo no es lo que estabas esperando.

Aquí hay un desglose de ambos:

x += x ?? 1 x += null ?? 1 x += 1 x = x + 1 x = null + 1 x = null x = x + x ?? 1 x = null + null ?? 1 x = null ?? 1 x = 1