Maison >développement back-end >C++ >C # Comparaison des chaînes: quand dois-je utiliser `==` vs `equals ()`?

C # Comparaison des chaînes: quand dois-je utiliser `==` vs `equals ()`?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-02-01 19:16:13714parcourir

C# String Comparison: When Should I Use `==` vs. `Equals()`?

C # Chaîne de caractères Problèmes sexuels égaux:

et Comparez == Equals() C # propose deux opérateurs de chaîne de comparaison:

et

. Bien qu'ils semblent pouvoir échanger, ils montrent des comportements uniques et peuvent conduire à des résultats inattendus. Explorons ce problème de langue à travers une scène spécifique. == Equals() Dans une application Silverlight, une condition compare deux chaînes:

Étrangement,
<code class="language-csharp">if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack"))
{
    // 执行代码
}

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
    // 执行代码
}</code>
Comparez False, et

Rappelez-vous vrai. Pourquoi y a-t-il une telle différence? == Equals() La réponse réside dans la mise en œuvre sous-jacente de ces opérateurs. Lorsqu'il est utilisé avec une expression d'objet,

sera évalué comme

. Cette méthode compare la référence d'objet, pas le contenu == System.Object.ReferenceEquals. Dans ce cas, les deux chaînes sont stockées dans différentes positions de mémoire, donc revient à false. ReferenceEquals En revanche, est une méthode virtuelle qui peut être réécrite par type dérivé. Pour les types de chaînes, la version réécrite du contenu

réel

, renvoyant ainsi True. Equals Par conséquent, pour la comparaison de la chaîne de chaîne, il est recommandé d'utiliser , il est plus intuitif et il effectue la comparaison basée sur le contenu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn