Je suis un peu confus ici.
Comme d'autres réponses l'ont noté, vous comparez des pommes et des oranges. ::rimshot::
Si vous souhaitez déterminer si un objet est d'un certain type, utilisez l'opérateur is
. Si vous voulez comparer des chaînes, utilisez l'opérateur ==
(ou toute autre méthode de comparaison appropriée si vous avez besoin de quelque chose de plus sophistiqué comme des comparaisons insensibles à la casse).
La rapidité avec laquelle une opération est comparée à l'autre (sans jeu de mots) ne semble pas vraiment importante.
Après lecture plus attentive, je pense que vous voulez comparer la vitesse de comparisions de chaîne avec la vitesse des comparaisons de référence (le type de comparaison utilisé dans le type de base System.Object).
Si tel est le cas, alors la réponse est que les comparaisons de référence ne seront jamais plus lentes que toute autre comparaison de chaîne. La comparaison de références dans .NET est à peu près analogue à la comparaison de pointeurs en C - à propos de aussi vite que vous pouvez l'obtenir.
Cependant, comment vous sentiriez-vous si une variable chaîne s
avait la valeur "I'm a string"
, mais la comparaison suivante a échoué:
if (((object) s) == ((object) "I'm a string")) { ... }
Si vous simplement des références compariez, qui pourraient se produire en fonction de la façon dont la valeur de s
était créé. S'il ne finissait pas par être interné, il n'aurait pas la même référence que la chaîne littérale, donc la comparaison échouerait. Vous pourriez donc avoir une comparaison plus rapide qui n'a pas toujours fonctionné. Cela semble être une mauvaise optimisation.
Est-ce que Nicholas J. Wienholt est l'auteur? Considérez-vous cela comme une lecture recommandée? – JSWork