5

私のC#アプリケーションには次のコードがあります。DateTimeFormatInfo.CurrentInfoをnullにする方法

DateTimeFormatInfo.CurrentInfo.DayNames 

ReSharperの7.1.1はDateTimeFormatInfo.CurrentInfoがnull参照の例外を引き起こす可能性があるという事実を強調しています。

これはどのような状況で発生しますか?または、アクセスしたプロパティがnullチェックされる必要があるオブジェクトがあるとReSharper側が判断する間違いですか?

答えて

9

ReSharperはおそらく、ここではレキシカル分析を行っています。

DateTimeFormatInfoがクラスであるので、このタイプの変数はnullすることができます。つまり、DateTimeFormatInfo.CurrentInfoによって返されたインスタンスはとなります。nullの参照です。

これはエラーです。

Resharperは、nullの参照を返さないようにメソッドがコード化されていることを理解していないため、警告が表示されます。

Resharperからのメッセージを聖書として受け取らないでください...

+0

あなたは優れた点を作っています。私はなぜこれが当てはまるのか理解したかったのです。 –

+0

正解が何であるか分かりませんが、私はこの答えが間違っていると確信しています。 ReSharperは、プロパティがオブジェクト参照を可能なnull参照エラーとして返すすべての状況にフラグを立てるにはあまりにもスマートすぎます。すべてのプログラムで何百ものエラーが発生するとします。具体的な反例として、私は、DateTimeFormatInfo.InvariantInfo.DayNamesの使用が、可能なヌル参照エラーとしてフラグが立てられないことを指摘することができます。 – RenniePet

+0

誰かが正しい答えを得るためにJetBrainsに問い合わせるべきです。バージョン7.1のバグかもしれません。あるいは、現在のカルチャー情報が、DateTimeFormatInfo.CurrentInfoが実際にnullを返すことができるプログラマーが作成したカルチャーに設定されている、奇妙なフリンジケースの可能性もあります。 – RenniePet

関連する問題