2015-08-24 14 views
9

Uso il programma di ricerca per aiutare con le funzionalità della lingua e il campo DateTime è annullabile. ReSharper ha suggerito questa sintassi:Nel C# resharper suggerito "accesso condizionato", cosa mi dà null?

TodayDate = paidDate?.ToString("d"), 

Sembra un expresson standard, ma non ho ricevuto un punto di domanda. ho due punti interrogativi che ottengo e due punti.

Una spiegazione sarebbe apprezzata. cosa succede quando paidDate è nullo?

+4

http://www.codeproject.com/Tips/900017/Null-Propagation-Operator-A-New-Feature-of-Csharp –

+2

È una funzionalità C# 6, non suggerita in C# 5 , in pratica restituisce null se 'paidDate' è nullo, altrimenti esegue' .ToString' su di esso. È un controllo in linea per null, altrimenti in C# 5 devi controllare che 'paidDate' abbia un valore prima di poter chiamare' .ToString' su di esso. –

risposta

13

?. è una nuova funzionalità introdotta in C# e si chiama Null-conditional Operators. Valuta la chiamata al metodo solo quando paidDate non è nullo e restituisce invece null.

È praticamente equivalente a

TodayDate = paidDate == null ? null : paidDate.ToString("d"); 

Se si tenta di chiamare un metodo che restituisce tipo di valore dopo ?. renderà il tutto ritorno Nullable<T> di quel tipo di valore, per esempio

var myValue = paidDate?.Day; 

renderebbe myValue essere digitato come Nullable<int>.

Problemi correlati