null値に対して==はtrueを返すのに、>=はなぜfalseを返すのですか?
疑問点
int型(またはNullable<int>)の変数が2つあります。2 つの変数について、大なり小なり (>=) 比較をしたかったのですが、結論から言うと、両方の変数が NULL の場合、これは false を返しますが、明らかに == 演算子は true を返します。
誰か、>= 演算子の意味的な定義に "or" という単語が含まれているので、それが論理的である理由を説明していただけませんか?
どのように解決するのですか?
この機能が最初に C# 2.0 で設計されたとき、この奇妙な点について大きな議論がありました。問題は、C# ユーザーがこれが意味を持つことに完全に慣れてしまっていることです。
if(someReference == null)
null可能な値型に等式を拡張する場合、以下の選択肢がある。
-
null可能な等式は、真に 持ち上がり . オペランドの一方または両方が NULL の場合、結果は真でも偽でもなく、NULL です。この場合、以下のどちらかになります。
-
a) null可能な値型の等式を持つことを違法とする。
if
文の中でif
ステートメントに必要なのは bool であって nullable bool ではないからです。 その代わりに、すべての人がHasValue
を使うようにします。これは冗長でイライラさせます。 -
b) 自動的にnullをfalseに変換する。 これの欠点は
x==null
がxがnullの場合にfalseを返すことです。これは混乱を招き、参照型でのnull比較の人々の理解に対して働きます。
-
-
Nullableな等式は解除されない。nullable equalityはtrueかfalseのどちらかで、nullとの比較はnull checkとなります。このため、nullable equalityはnullable inequalityと矛盾している。
これらの選択肢はどれも明らかに正しいとは言えず、すべてに長所と短所があります。たとえば、VBScript は 1b を選択します。多くの議論の後、C# 設計チームは #2 を選択しました。
関連
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み] JavaScriptでNULL値をチェックするにはどうしたらいいですか?
-
[解決済み] C#で演算子==はジェネリック型に適用できない?
-
[解決済み] なぜ(0 < 5 < 3)はtrueを返すのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み] 比較演算子はNULL intに対してどのように作用しますか?
-
[解決済み] Pythonの "is "演算子を理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない