Opérateur de signe (==) égal en C #: quand il échoue-t-il et comment gérer
] L'opérateur == dans
c # est très pratique pour comparer l'égalité de deux objets. Bien que l'opérateur ==
soit généralement considéré comme fonctionnant avec tous les types, il est inutilisable dans certains cas.
Un exemple est de comparer les types génériques non contraints. Le code de code fourni dans la question Bool compare
ne peut pas être compilé car il essaie de comparer deux paramètres génériques de type T. S'il n'y a pas de contraintes sur T, le type peut être un type de valeur, auquel cas l'opérateur ==
ne peut pas être appliqué directement.
par exemple, le int
et float
float ne sont pas prédéfinis
. Ils utilisent la méthode égaux
pour la comparaison de valeur. D'un autre côté, des types de référence tels que string
ont des opérateurs prédéfinis ==
pour vérifier les références d'objets.
Donc, sans spécifier des contraintes sur T, le compilateur ne peut pas déterminer si vous devez utiliser l'opérateur ==
prédéfini pour le type de référence, ou la méthode égal
du type de valeur. Pour résoudre ce problème, t doit être limité à un type de référence.
Maintenant, supposons que vous vous référez au type de paramètre de type. Dans ce cas, l'opérateur ==
comparera à l'aide de références prédéfinies, plutôt que toute version surchargée de l'opérateur. En effet, les comparaisons de citation prédéfinies sont considérées comme plus basiques et fiables.
Si vous disposez d'informations insuffisantes sur les paramètres de type, vous pouvez utiliser l'interface iEqualityComparer
ou la méthode statique EqualityComparer
. Ces méthodes fournissent un moyen standardisé de comparer l'égalité des objets quel que soit leur type.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3