C# での文字列比較: `String.Equals()` と `==` はどのような場合に交換可能ですか?
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
と tvi.Header
の両方に同じ値「Category」が含まれていますが、==
演算子は false
を返し、String.Equals()
メソッドは true
を返します。このため、なぜこれら 2 つの比較方法で異なる結果が得られるのかという疑問が生じます。
String.Equals()
と ==
String.Equals()
演算子と ==
演算子の間には、次の 2 つの基本的な違いがあります。
- 型固有の実装: 演算子はオブジェクトのコンパイル時の型に基づいて比較しますが、
==
はポリモーフィックです。つまり、その実装は比較されるオブジェクト型の実行時に依存します。 。String.Equals()
- Null 値の処理: 演算子は、Null 参照を比較するときに例外をスローしませんが、
==
演算子は、いずれかの引数が null の場合にString.Equals()
例外をスローします。NullReferenceException
違いを示す例
これらの違いを説明するために、次のコードを考えてみましょう:
object x = new StringBuilder("hello").ToString(); object y = new StringBuilder("hello").ToString(); if (x.Equals(y)) // True if (x == y) // False
と x
は同じ値を持ちますが、y
演算子は異なるオブジェクトのコンパイル時の型 (==
) に基づいて比較するため、false
を返します。正しい比較を行うには、オブジェクトを適切な型 (この場合は object
) に明示的にキャストする必要があります。 string
string xs = (string)x; string ys = (string)y; if (xs == ys) // True
結論
演算子と String.Equals()
演算子はしばしば同じ意味で使用されますが、それらの実装と null 値の処理における微妙な違いを理解することが重要です。信頼性と一貫性のある文字列比較を保証するには、特に異なる型のオブジェクトを比較する場合や null 参照を扱う場合には、一般に ==
メソッドを使用することをお勧めします。 String.Equals()
以上がC# での文字列比較: `String.Equals()` と `==` はどのような場合に交換可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?
