重複の可能性:
C# は値の型を null と比較しても問題ありません
ちょうど今、C# (4.0) コンパイラで奇妙なことを発見しました。
int x = 0;
if (x == null) // Only gives a warning - 'expression is always false'
x = 1;
int y = (int)null; // Compile error
int z = (int)(int?)null; // Compiles, but runtime error 'Nullable object must have a value.'
に代入できない場合null
、int
なぜコンパイラはそれらを比較できるのですか (警告のみが表示されます)。
興味深いことに、コンパイラは次のことを許可しません。
struct myStruct
{
};
myStruct s = new myStruct();
if (s == null) // does NOT compile
;
struct
サンプルはコンパイルできないのに、サンプルはコンパイルできるのはなぜint
ですか?