string.Equals()
et ==
sont-ils vraiment interchangeables ?
Bien que les opérateurs string.Equals()
et ==
soient utilisés pour comparer des objets pour vérifier leur égalité, ils se comportent différemment.
Par exemple, la variable s
est une chaîne contenant « Catégorie », et tvi.Header
est le titre du WPF TreeViewItem, qui contient également « Catégorie ». Cependant, s == tvi.Header
est évalué à faux, tandis que s.Equals(tvi.Header)
est évalué à vrai.
Cette différence découle de deux différences clés :
Equals
est polymorphe, ce qui signifie que son implémentation dépend du type d'exécution de l'objet. Dans ce cas, il utilisera l'implémentation de chaîne pour comparer les valeurs de deux chaînes. ==
, d'autre part, est typé statiquement et utilisera l'implémentation appropriée en fonction du type de compilation de l'objet comparé (String et TreeViewItem.Header dans ce cas). Comme ces types sont différents, ==
effectue une comparaison de référence et renvoie false. Equals
est appelé sur un objet nul, une exception NullReferenceException est levée, et ==
si les deux opérandes sont nuls, le résultat est vrai. Pour éviter ce problème, utilisez object.Equals
au lieu de Equals
lorsque vous traitez des objets potentiellement nuls. Pour résumer, bien que les opérateurs string.Equals()
et ==
se ressemblent, il existe des différences dans les types et la gestion des valeurs nulles. Pour des comparaisons de valeurs précises, vous devez utiliser string.Equals()
lorsque vous comparez des valeurs de chaîne et faire attention aux valeurs nulles lorsque vous utilisez l'opérateur ==
.
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!