5

我在我的C#應用​​程序中有以下代碼。DateTimeFormatInfo.CurrentInfo如何爲空

DateTimeFormatInfo.CurrentInfo.DayNames 

ReSharper的7.1.1是突出的事實DateTimeFormatInfo.CurrentInfo可能導致空引用異常。

在什麼情況下會發生這種情況?或者,這只是ReSharper的一部分認爲你訪問的屬性應該爲空的任何對象檢查的錯誤?

回答

9

ReSharper很可能就是在這裏做詞法分析,沒有更深層次的東西。

由於DateTimeFormatInfo是一類,這種類型的變量可以null。這意味着DateTimeFormatInfo.CurrentInfo返回的實例可以null的引用。

這就是你得到的錯誤。

Resharper不理解該方法是編碼的,因此它不會返回null引用,所以它會發出警告。

不要把來自Resharper的信息當作聖經......

+0

你說得很好。我想確保我明白爲什麼會出現這種情況。 –

+0

我不知道什麼是正確的答案,但我很確定這個答案是不正確的。 ReSharper非常聰明,只需將所有屬性返回對象引用的情況都標記爲可能的空引用錯誤 - 如果確實所有程序都會得到數百個這樣的錯誤。作爲一個具體的反例,我可以指出,使用DateTimeFormatInfo.InvariantInfo.DayNames不會被標記爲可能的空引用錯誤。 – RenniePet

+0

有人應該查詢JetBrains以獲得正確的答案。也許這是7.1版本中的一個錯誤。或者,也許可能出現一些奇怪的邊緣情況,其中當前的文化信息已被設置爲程序員創建的文化,即DateTimeFormatInfo.CurrentInfo實際上可以返回null。 – RenniePet