5

Ho il seguente codice nella mia applicazione C#.Come può DateTimeFormatInfo.CurrentInfo essere nullo

DateTimeFormatInfo.CurrentInfo.DayNames 

ReSharper 7.1.1 sta evidenziando il fatto che il DateTimeFormatInfo.CurrentInfo potrebbe causare un'eccezione riferimento nullo.

In quali circostanze si verificherebbe? O è solo un errore da parte di ReSharper credere che qualsiasi oggetto a cui si accede sia nullo?

risposta

9

ReSharper sta probabilmente facendo solo analisi lessicali qui e niente di più profondo.

Da DateTimeFormatInfo è una classe, una variabile di questo tipo può esserenull. Ciò significa che l'istanza restituita da DateTimeFormatInfo.CurrentInfopuò essere un riferimento null.

Questo è l'errore che si ottiene.

Il riassuntore non ha capito che il metodo è stato codificato in modo tale da non restituire un riferimento null, pertanto viene visualizzato un avviso.

Non prendere i messaggi da Resharper come scrittura ...

+0

Sei un punto eccellente. Volevo essere sicuro di aver capito perché questo era il caso. –

+0

Non so quale sia la risposta corretta, ma sono abbastanza sicuro che questa risposta non sia corretta. ReSharper è troppo intelligente per segnalare tutte le situazioni in cui una proprietà restituisce un riferimento a un oggetto come possibile errore di riferimento null - se facesse tutti i programmi otterrà centinaia di questi errori. Come controesempio specifico, posso sottolineare che l'utilizzo di DateTimeFormatInfo.InvariantInfo.DayNames non viene contrassegnato come possibile errore di riferimento null. – RenniePet

+0

Qualcuno dovrebbe interrogare JetBrains per ottenere la risposta corretta. Forse è un bug nella versione 7.1. O forse è possibile per alcuni strani casi marginali in cui le informazioni sulla cultura corrente sono state impostate su una cultura creata da un programmatore che DateTimeFormatInfo.CurrentInfo può effettivamente restituire null. – RenniePet

Problemi correlati