Domanda

  

Eventuali duplicati:
   Qual è il “??” operatore per?

Si prega di spiegare a me che cosa è l'uso di "??" in seguito il codice e ciò che è "??" usato per.

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

{         e.Description = "data dell'ordine non deve essere in futuro.";         return false;     }

il codice di cui sopra è a http://nettiers.com/EntityLayer.ashx

Grazie.

È stato utile?

Soluzione

(Questo è un duplicato, ma è difficile per cercare, quindi sono abbastanza felice di fornire più un altro obiettivo per le ricerche future ...)

E 'il null coalescenza operatore . Essenzialmente valuta il primo operando, e se il risultato è nullo (sia un riferimento nullo o il valore nullo per un tipo di valore nullable), allora valuta il secondo operando. Il risultato è a seconda di quale è stata valutata operando scorso, in modo efficace.

Si noti che a causa della sua associatività, è possibile scrivere:

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

se E1, E2, E3 e E4 sono tutte espressioni di tipo int? -. Inizierà con E1 e progredire fino a quando non trova un valore non nullo

Il primo operando deve essere un tipo nullable, ma e secondo operando può essere non annullabile, nel qual caso il tipo di espressione generale è non nullable. Ad esempio, supponiamo E4 è un'espressione di tipo int (ma tutto il resto sono ancora int? allora si può fare x non annullabile:

int x = E1 ?? E2 ?? E3 ?? E4;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top