Maison >développement back-end >C++ >Quand l'opérateur C # est-il échoué et comment pouvez-vous le gérer?
c #
Le symbole informatique est utilisé pour comparer la nature égale des deux objets, ce qui est très pratique. Bien que les symboles opérationnels soient couramment utilisés dans tous les types, il ne peut pas être utilisé dans certains cas.
==
Un exemple est un type générique relativement non contraint. Le fragment de code fourni dans le problème ne peut pas être compilé car il essaie de comparer les paramètres génériques des deux types T. S'il n'y a pas de contrainte sur T, ce type peut être un type de valeur. ==
Les types équivalents n'ont pas d'opérateur prédéterminé bool Compare<T>(T x, T y) { return x == y; }
. Ils utilisent la méthode ==
pour comparer la valeur. D'un autre côté, le et d'autres types de référence ont un opérateur prédéterminé
int
Par conséquent, si la contrainte sur T n'est pas spécifiée, le compilateur ne peut pas déterminer s'il est utilisé comme opérateur float
avec un type de type de référence prédéterminé, ou la méthode ==
avec type de valeur. Pour résoudre ce problème, le T est contraint dans un type de référence. Equals
string
Maintenant, en supposant que vous référerez le type comme le paramètre de type. Dans ce cas, l'opérateur comparera la référence prédéfinie, pas une version de charge lourde de l'opérateur. En effet, les références prédéfinies sont considérées comme plus basiques et fiables. ==
ou la méthode statique ==
. Ces méthodes fournissent une méthode de comparaison standardisée, quel que soit son type. Equals
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!