ここで少し混乱しています。
他の回答が指摘しているように、リンゴとオレンジを比較しています。::rimshot::
オブジェクトが特定のタイプであるかどうかを判断したい場合は、is
演算子を使用します。
文字列を比較したい場合は、==
演算子を使用します (または、大文字と小文字を区別しない比較のような手の込んだものが必要な場合は、他の適切な比較方法を使用します)。
ある操作が他の操作と比較してどれだけ速いか (しゃれは意図されていません) は、実際には問題ではないようです。
よく読んでみると、文字列比較の速度と参照比較 (System.Object の基本型で使用される比較の種類) の速度を比較したいと思います。
その場合、答えは、参照比較が他の文字列比較より遅くなることはないということです。.NET での参照の比較は、C でのポインターの比較とほとんど同じです。
s
ただし、文字列変数の値"I'm a string"
が であるにもかかわらず、次の比較が失敗した場合、どのように感じるでしょうか。
if (((object) s) == ((object) "I'm a string")) { ... }
単純に参照を比較した場合、 の値がどのようs
に作成されたかによって、それが発生する可能性があります。インターンされなかった場合、リテラル文字列と同じ参照を持たないため、比較は失敗します。したがって、常に機能するとは限らない高速な比較が行われる可能性があります。それは悪い最適化のようです。