の理解の違い C#では、この状況に遭遇する可能性があります。==コンポーネントの比較の比較を使用して、2つの文字列をFalseと比較し、equals()メソッドはtrueを返します。この動作を理解するには、これらの演算子の基本的な違いを習得する必要があります。
オブジェクトに使用する場合、==オペレータの値はsystem.object.ReferenceEqualsです。これは、2つの文字列オブジェクトがメモリ内の同じオブジェクトを参照するかどうかをチェックすることを意味します。代わりに、equals()は、カスタムタイプ(文字列を含む)で書き換えることができる仮想メソッドです。
文字列の場合、equals()の書き換えバージョンを使用して、文字列の実際のコンテンツを確認します。したがって、2つの文字列を同じ文字と比較するが、異なるメモリ位置に格納されている場合、==は同じオブジェクトで参照されていないためFalseに戻り、等しい()は等しいため真に戻ります。
コードの例:
次のコードフラグメントを検討してください:
このコードでは、これらの2つの条件で、選択したListBoxItemのコンテンツプロパティを文字列「エネルギー攻撃」と比較します。 equalsの最初の条件はtrueとして計算されますが、コンテンツプロパティが新しい文字列オブジェクトである場合、==の2番目の条件はfalseとして計算できます。これは、==演算子が識別をチェックし、同じ値を持つ2つの異なる文字列オブジェクトが異なるためです。したがって、C#の文字列の等しい性質を比較する場合、==(ロゴをチェックする)ではなく、equals()メソッド(コンテンツの等しい性質を評価する)を使用することをお勧めします。
以上がC#文字列の比較:==はいつequals()と違いますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。