C# で文字列を比較する場合、開発者は多くの場合、==
演算子と String.Equals()
メソッドのどちらかを選択する必要があります。この選択は、コードの動作と正確さに大きな影響を与える可能性があります。
==
演算子はオブジェクトの同一性をテストします。これは、2 つの文字列参照がメモリ内の同じオブジェクトを指しているかどうかを比較することを意味します。一方、String.Equals()
は、参照自体を無視して、文字列値の等しいかどうかをチェックします。
ほとんどの場合、string
型の文字列を比較する場合、両方のメソッドが同じ結果を返すため、==
と String.Equals()
の間に実質的な違いはありません。ただし、場合によっては、String.Equals()
の方が推奨されます。
理由の 1 つは、string
以外の型の文字列を比較する場合です。たとえば、2 つの文字列の型が object
またはジェネリック型 T
である場合でも、==
はオブジェクトの ID をテストしますが、これは予期しない動作である可能性があります。この場合、文字列値の比較には String.Equals()
を使用する必要があります。
さらに、String.Equals()
では、大文字と小文字を区別するか区別しない等価性などのさまざまな比較オプションが可能です。この柔軟性は、異なる形式で保存された文字列を操作する場合や、異なるソースからの文字列を比較する場合に役立ちます。
一般に String.Equals()
は文字列比較により適していますが、状況によっては ==
の方が適切な場合もあります。たとえば、オブジェクト参照を使用して文字列の特定のインスタンスを追跡するシナリオなど、オブジェクト ID を明示的にテストする場合。
多くのコードベースが String.Equals()
の代わりに ==
を使用することを好む理由は、おそらく Java の文字列比較動作に起因します。 Java では、==
を使用して文字列を比較するのは間違っており、常に false
を返します。 C# は Java から多くの概念を継承しているため、一部の開発者は一貫性を維持し、潜在的なエラーを回避するためにこのアプローチを採用する場合があります。
以上がC# における String.Equals() と == : 参照の等価性よりも値の等価性を選択する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。