5

Ich habe den folgenden Code in meiner C# Anwendung null sein.Wie kann DateTimeFormatInfo.CurrentInfo

DateTimeFormatInfo.CurrentInfo.DayNames 

ReSharper 7.1.1 ist auf den Umstand, dass die DateTimeFormatInfo.CurrentInfo eine null-Verweisausnahme verursachen könnte.

Unter welchen Umständen würde dies geschehen? Oder ist das nur ein Fehler von ReSharper, der glaubt, dass jedes Objekt, auf dessen Eigenschaft Sie zugreifen, null überprüft werden sollte?

Antwort

9

ReSharper ist höchstwahrscheinlich nur tun, lexikalische Analyse hier und nichts tiefer.

Da DateTimeFormatInfo ist eine Klasse, eine Variable dieses Typs null sein kann. Was bedeutet, dass die Instanz von DateTimeFormatInfo.CurrentInfo zurück kann ein null Bezug.

Das ist der Fehler, den Sie bekommen.

Resharper versteht nicht, dass die Methode so codiert wurde, dass sie keine null Referenz zurückgibt, also warnt sie.

Nehmen Sie nicht die Nachrichten von Resharper als Schriftstelle ...

+0

Sie machen einen ausgezeichneten Punkt. Ich wollte sicherstellen, dass ich verstand, warum das so war. –

+0

Ich weiß nicht, was die richtige Antwort ist, aber ich bin mir ziemlich sicher, dass diese Antwort falsch ist. ReSharper ist viel zu schlau, um alle Situationen zu kennzeichnen, in denen eine Eigenschaft eine Objektreferenz als möglichen Nullreferenzfehler zurückgibt - wenn dies der Fall wäre, würden alle Programme Hunderte dieser Fehler erhalten. Als ein spezifisches Gegenbeispiel kann ich darauf hinweisen, dass die Verwendung von DateTimeFormatInfo.InvariantInfo.DayNames nicht als möglicher Nullreferenzfehler gekennzeichnet wird. – RenniePet

+0

Jemand sollte JetBrains abfragen, um die richtige Antwort zu erhalten. Vielleicht ist es ein Fehler in Version 7.1. Oder es ist möglicherweise für einige seltsame Randfälle möglich, bei denen die aktuelle Kulturinformation auf eine vom Programmierer erstellte Kultur gesetzt wurde, dass DateTimeFormatInfo.CurrentInfo tatsächlich null zurückgeben kann. – RenniePet