1. ホーム
  2. c#

[解決済み] 比較演算子はNULL intに対してどのように作用しますか?

2022-04-20 05:52:04

質問

nullable型について勉強を始めているのですが、以下のような挙動に遭遇しました。

nullable int を試しているとき、比較演算子が予期しない結果を与えるのがわかります。例えば、以下の私のコードでは、私が得た出力は次のとおりです。 "両方と1は等しいです"。 . なお、"null"も表示されません。

int? a = null;
int? b = 1;

if (a < b)
    Console.WriteLine("{0} is bigger than {1}", b, a);
else if (a > b)
    Console.WriteLine("{0} is bigger than {1}", a, b);
else
    Console.WriteLine("both {0} and {1} are equal", a, b);

非負の整数がnullより大きいことを期待していたのですが、何か見落としているのでしょうか?

どのように解決するのですか?

によると MSDN - このページの下の方にある「Operators"」というセクションにあります。

<ブロッククオート

null可能な型との比較を行う場合、null可能な型の1つの値が null で、もう一方がそうでない場合、すべての比較の評価は false ただし !=

だから両方 a > ba < b は、次のように評価されます。 false から a がNULLの場合...