「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C#文字列の比較:string.equals()と==等価なのはいつですか?

C#文字列の比較:string.equals()と==等価なのはいつですか?

2025-03-12に投稿されました
ブラウズ:253

String Comparison in C#: When Are `String.Equals()` and `==` Interchangeable?

c#は文字列比較で混同します: string.equals()メソッドと == 演算子は交換可能ですか?

C#では、文字列比較が予期しない結果を生成することがあります。よくある質問は、 string.equals()メソッドと == 等記号演算子がまったく同じように振る舞うかどうかです。

次のコードスニペットを検討してください:

string s = "Category";
TreeViewItem tvi = new TreeViewItem();
tvi.Header = "Category";

Console.WriteLine(s == tvi.Header); // false
Console.WriteLine(s.Equals(tvi.Header)); // true
Console.WriteLine(s == tvi.Header.ToString()); // true
s

s and tvi.header tvi.header ] tvi、 == オペレーターは false string string(&&] string(&&]」を返します。これは疑問を提起します:なぜこれらの2つの比較方法が異なる結果をもたらすのですか?

string.equals() == の間の重要な違い string.equals()

==

オペレーターには2つの基本的な違いがあります。 タイプ固有の実装:

==
    演算子は、オブジェクトのコンパイルタイプタイプに基づいて比較されます。
  1. null value Processing: == オペレーターは、null参照を比較するときに例外をスローしません。
  2. 違いを示す例 ] これらの違いを説明するには、次のコードを検討してください。 オブジェクトX = new StringBuilder( "hello")。toString(); オブジェクトy = new StringBuilder( "Hello")。toString(); if(x.equals(y))// true if(x == y)// false
x

and y y

] y

] y

false
object x = new StringBuilder("hello").ToString();
object y = new StringBuilder("hello").ToString();

if (x.Equals(y)) // True

if (x == y) // False

string xs =(string)x; string ys =(string)y; if(xs == ys)// true 結論は string.equals()および == 演算子は通常互換性がありますが、実装とヌル価値処理におけるニュアンスを理解することが重要です。信頼性の高い一貫した文字列比較を確保するために、特に異なるタイプのオブジェクトを比較したり、空の参照を処理する場合は、

string.equals()
メソッドを一般的に推奨します。 
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3