なぜidentity === operator isn't available in c#?. 利用できない理由はありますか?c#の===演算子に相当するものは何ですか? ある場所で、同一性演算子 === が等号 == 演算子よりも高速であることを見たからです。== 演算子はデータ型を一時的に変更するためです。
更新:===
と==
演算子の違い。=== は基本的に 2 つの変数を一時的なデータ型に変換しませんが、== は変換された変数のデータ型を一時的に変換します。
ReferenceEquals
存在するからです。
値の型は等価性をオーバーライドするためです。
JavaScript とは異なり、C# には「真実」と「偽」の値がなく、暗黙的な変換が明確に定義されているためです。
つまり、JavaScript とは異なり、C# では必要ないため存在しません。
これは、PHP / javascriptが動的型付け言語であるのに対し、C-Sharpは静的型付け言語であるためです。
たとえば(PHPの場合)
if (5 == '5') ... // is true
if (5 === '5') ... // is false
C#にいる間
if (5 == '5') ... // compile error, incompatible types
編集
詳述すると、多くのタイプには暗黙の変換(つまり、文字列とint)がないため、コンパイルエラーが発生しますが、暗黙の変換(intとfloat)がある場合は、同様のタイプの比較を行います。できるよ。
float x = 1.0f;
int y = 1;
if (x == y) ... // is true
if (x == y && x.GetType() == y.GetType()) ... // is false