2016-06-16 51 views

risposta

7

Ebbene, ?. è un nullo condizionale operatore

https://msdn.microsoft.com/en-us/library/dn986595.aspx

.210

x? .y

mezzi di richiamo null se x è nulla e x.y altrimenti

?? è un operatore null coalescenza

https://msdn.microsoft.com/en-us/library/ms173224.aspx

x ?? y 

significa che se x == null ritorno y, tuttavia x

unisce tutti i suddetti

helper?.Settings.HasConfig ?? false 

mezzi: ritorno false se

helper == null or 
helper.Settings.HasConfig == null 

altrimenti restituisce

helper.Settings.HasConfig 

Il codice senza ?? e ?.if può essere riscritta in ingombrante

if (!(helper == null 
     ? false 
     : (helper.Settings.HasConfig == null 
      ? false 
      : helper.Settings.HasConfig))) 
4

Controllare il C# operator list:?

x .y ​​- nulla condizionale accesso membri. Restituisce null se l'operando di sinistra è nullo.

x ?? y - restituisce x se non è nullo; altrimenti, restituisce y.

Così helper?.Settings restituirà null se helper è null altrimenti restituirà helper.Settings

se helper.Settings non è nullo e helper.Settings.HasConfig non è nullo allora restituirà il valore di helper.Settings.HasConfig altrimenti restituirà falso.

N.B: se helper?.Settings è null, si verificherà l'eccezione di riferimento NULL.

2

?. operatore è conosciuta come la safe navigation operator introdotta in C# 6. Null condizionale Operatore Sintassi

Il nulla operatore condizionale (?.) Viene colloquialmente denominato "Elvis operator" a causa della sua somiglianza con un paio di occhi scuri sotto un grande ciuffo di capelli. Il condizionale nullo è una forma di un operatore di accesso membro (il.). Ecco una spiegazione semplificata per l'operatore condizionale null:

L'espressione A?.B restituisce B se l'operando di sinistra (A) non è nullo; altrimenti, valuta tonull.

Molti altri dettagli definiscono completamente il comportamento:?

  • Il tipo dell'espressione A .B è il tipo di B, nei casi in cui B è un tipo di riferimento. Se B è un tipo di valore, l'espressione A? .B è il tipo nullable che include il tipo sottostante rappresentato da B.

  • La specifica per la funzione mandati che A essere valutati non
    più di una volta.

  • l'operatore condizionale cortocircuiti nulli, il che significa che si può
    catena multipla? .operators, sapendo che il primo nullo
    incontrato impedisce il (più a destra) componenti dell'espressione
    rimaste vengano valutati.

Esempio: - Supponiamo di avere una classe Student

public class Student 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int Age { get; set; } 
} 

Si supponga che s rappresenta uno studente. Considerate queste due affermazioni:

var name = s?.FirstName; 
var age = s?.Age; 

Il nome della variabile è una stringa. Il valore del nome dipende dal valore di s. Se s è nullo, il nome è nullo. Se s non è null, il nome è il valore di s.FirstName. Si noti che s.FirstName potrebbe essere nullo anche se non lo è s.

L'età variabile è int? (che è un altro modo di specificare un Nullable). Come per il nome, il valore dell'età dipende dal valore di s. Se s è null, l'età è un int? senza valore. Se s è non nullo, l'età è il valore compreso tra s.Age.

Ecco le basi. La potenza di questa funzione deriva da tutti gli scenari in cui questa funzione consente di ottenere codice più pulito.

+0

bella spiegazione ... –