クラス(または構造体)に制限されていないジェネリック型パラメータを持つ場所がいくつかあります。その型の変数をnull
と比較しようとすると、Resharperは値を比較していると不平を示しますnull
(有効な異論は、必ず入力してください)と入力します。 nullと比較する前に変数が値型であるかどうかを確認する方法はありますか?例えば変数がC#の値型であるかどうかテストする必要がありますか?
:
public TObject MyProperty { get; set; }
...
private void SomeMethod()
{
if(MyProperty == null) //Warning here
{
...
}
}
私はその有効な--is if(!(MyProperty is ValueType) && MyProperty)
を行ってきましたか?それは警告を取り除くわけではありませんが、必ずしも何かを意味するものではありません。
ところで、 "C#.NET"のようなものはありません。言語の名前は "C#"です。 –
値の型をnullと比較するために_ wanting_すると、深刻な問題が発生します。 –
この場合、チェックは必要ありません。MyPropertyが値型の場合、等価はfalseを返します。コンパイラはMyPropertyをNullableに最初に変換するコードを記述します。それでも、あなたのタイピングに苛立っていることを示唆しているので、警告は有効です。 –