Pregunta

  

Duplicar posibles:
   ¿Cuál es el operador “??” para?

Por favor, explique mí lo que es el uso de "??" por debajo de código y lo que es "??" utilizado para.

if ((this.OrderDate ?? DateTime.MinValue) > DateTime.Today)

{         e.Description = "la fecha del pedido no debe estar en el futuro.";         falso retorno;     }

el código anterior es en http://nettiers.com/EntityLayer.ashx

Gracias.

¿Fue útil?

Solución

(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 nula coalescencia operador . Esencialmente se 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 anulable), entonces se evalúa el segundo operando. El resultado es lo que se evaluó operando última, de manera eficaz.

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 expresiones de tipo int? -. Se iniciará con E1 y progresar hasta que encuentra un valor no nulo

El primer operando tiene que ser un tipo anulable, pero e segundo operando puede ser no anulable, en cuyo caso el tipo de expresión en general es no anulable. Por ejemplo, supongamos E4 es una expresión de tipo int (pero todo el resto todavía están int? entonces puede presentar x no anulable:

int x = E1 ?? E2 ?? E3 ?? E4;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top