Pergunta

Possível duplicata:
O que é "??" operador para?

Por favor, me explique o que é usar "??" no código abaixo e o que é "??" usado para.

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

{E.Description = "A data do pedido não deve estar no futuro."; retorna falso; }

O código acima está em http://nettiers.com/entitylayer.ashx

Obrigado.

Foi útil?

Solução

(Isso é uma duplicata, mas é difícil de procurar, por isso estou feliz o suficiente para fornecer mais outro alvo para pesquisas futuras ...)

É o operador de coalescação nula. Essencialmente, ele avalia o primeiro operando e, se o resultado for nulo (uma referência nula ou o valor nulo para um tipo de valor anulado), ele avalia o segundo operando. O resultado é o operando que foi avaliado por último, efetivamente.

Observe que, devido à sua associativa, você pode escrever:

int? x = E1 ?? E2 ?? E3 ?? E4;

E se E1, E2, E3 e E4 são todas expressões do tipo int? - vai começar com E1 e progredir até encontrar um valor não nulo.

O primeiro operando deve ser um tipo anulável, mas o segundo operando pode ser não indicável; nesse caso, o tipo de expressão geral não é indicável. Por exemplo, suponha que o E4 seja uma expressão do tipo int (mas todo o resto ainda é int? Então você pode fazer x Não nulo:

int x = E1 ?? E2 ?? E3 ?? E4;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top