C# では、一般に値の型 (整数など) を null にすることはできないと考えられていますが、実際には null 値と比較できます。次のコード スニペットに示すように、この動作は開発者にとって混乱を招く可能性があります:
<code class="language-csharp">Int32 x = 1; if (x == null) { Console.WriteLine("What the?"); }</code>
このコードは、null は未設定の値オブジェクトを表すため、x を null にすることはできないという予想に反します。ただし、コンパイラはエラーをスローしないため、この比較の妥当性が疑問視されます。
その説明は、C# で演算子が解決される独自の方法にあります。この場合、コンパイラは、適用される可能性のある == 演算子の 2 つのオーバーロードを識別します:
x と null はどちらも暗黙的に null 許容整数 (Nullable
この動作は、値型を他のプリミティブ型と比較できるパターンと一致しています。たとえば、比較 x == 12.6 (x は整数) も常に false になります。これは、整数 x は暗黙的に倍精度浮動小数点数に変換可能であり、比較は 2 つの倍精度浮動小数点数の間で行われるためです。 。
以上がC# の値の型は Null と比較できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。