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つの基本的な違いがあります。
タイプ固有の実装:
== オペレーターは、null参照を比較するときに例外をスローしません。
]
これらの違いを説明するには、次のコードを検討してください。
オブジェクトX = new StringBuilder( "hello")。toString();
オブジェクトy = new StringBuilder( "Hello")。toString();
if(x.equals(y))// true
if(x == y)// false
and y y
] y] y
falseobject 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()
および ==
演算子は通常互換性がありますが、実装とヌル価値処理におけるニュアンスを理解することが重要です。信頼性の高い一貫した文字列比較を確保するために、特に異なるタイプのオブジェクトを比較したり、空の参照を処理する場合は、
メソッドを一般的に推奨します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3