Maison >développement back-end >C++ >C # Comparaison des chaînes: quand == diffère-t-il d'Equals ()?

C # Comparaison des chaînes: quand == diffère-t-il d'Equals ()?

DDD
DDDoriginal
2025-02-01 18:56:08308parcourir

C# String Comparison: When Does == Differ From Equals()?

La différence entre la compréhension de C # == et equals ()

En C #, vous pouvez rencontrer cette situation: utilisez == la comparaison comparative du composant pour comparer les deux chaînes à false, et la méthode equals () renvoie true. Pour comprendre ce comportement, vous devez maîtriser les différences fondamentales de ces opérateurs.

Lorsqu'il est utilisé pour les objets, la valeur de == la valeur de l'opérateur est System.Object.ReferenceEquals. Cela signifie qu'il vérifie si les deux objets de chaîne font référence au même objet en mémoire. Au lieu de cela, Equals () est une méthode virtuelle qui peut être réécrite par des types personnalisés (y compris la chaîne).

Pour la chaîne, utilisez la version de réécriture d'Equals () pour vérifier le contenu réel de la chaîne. Par conséquent, si vous comparez deux chaînes avec le même caractère mais stockées dans différentes positions de mémoire, == reviendra à False car elles ne sont pas référencées dans le même objet, et equals () reviendra à true car elles sont égales.

Exemple de code:

Considérez le fragment de code suivant:

Dans ce code, ces deux conditions compareront les propriétés de contenu du ListBoxItem sélectionné avec la chaîne "Energy Attack". Bien que la première condition d'Equals () soit calculée comme vraie, si la propriété de contenu est un nouvel objet de chaîne, la deuxième condition de == peut être calculée comme fausse. En effet, l'identification de vérification de l'opérateur == et deux objets de chaîne différents avec la même valeur sont différents.

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

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
    // 执行代码
}</code>
Par conséquent, en comparant la nature égale de la chaîne en C #, il est recommandé d'utiliser la méthode equals () (il évalue la nature égale du contenu) au lieu de == (il vérifie le logo).

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