(Este es un duplicado, pero es difícil de buscar, así que estoy bastante feliz para proporcionar más otro objetivo para futuras búsquedas ...)
Es la null-coalescing operator. Esencialmente evalúa el primer operando, y si el resultado es nulo (ya sea una referencia nula o el valor nulo para un tipo de valor que admite nulos), entonces evalúa el segundo operando. El resultado es el operando que fue evaluado por última vez, efectivamente.
Tenga en cuenta que debido a su asociatividad, se puede escribir:
int? x = E1 ?? E2 ?? E3 ?? E4;
si E1
, E2
, E3
y E4
son todas las expresiones de tipo int?
- se iniciará con E1
y el progreso hasta que encuentra un no valor nulo.
El primer operando debe ser un tipo anulable, pero el segundo operando no puede contener nulos, en cuyo caso el tipo de expresión general no admite nulos. Por ejemplo, supongamos E4 es una expresión de tipo int
(pero todo el resto está siendo int?
entonces puede hacer x
no anulable:
int x = E1 ?? E2 ?? E3 ?? E4;
'' ??, como tal, podría ser difícil de buscar, pero la búsqueda de La "sintaxis de C#" o los "operadores de C#" lo llevan rápidamente a las respuestas. –