Existe-t-il un moyen possible de comparer des chaînes sans appeler la fonction op_Equality par mscorlib? Par exemple:Comment éviter les appels à mscorlib lors de la comparaison de chaînes?
string s1 = "hi";
if(s1 == "bye")
{
Console.Writeline("foo");
}
Compile à:
IL_0003: call bool [mscorlib]System.String::op_Equality(string, string)
Et regardant op_Equality à mscorlib de GAC appelle une autre méthode Equals (string, string) code:
public static bool Equals(string a, string b)
{
return a == b || (a != null && b != null && string.EqualsHelper(a, b));
}
il utilise le code op bne.une.s pour comparer ces chaînes.
Maintenant de retour à ma question, comment puis-je comparer 2 chaînes sans appeler aucune fonction du mscorlib comme la méthode Equals.
Pourquoi voulez-vous éviter mscorlib? –
Vous pourriez écrire votre propre méthode, peut-être en itérant sur les caractères. Mais quel serait le but? –
Les chances sont que toute méthode que vous écrivez ne sera pas aussi rapide que celle intégrée, soit. La méthode intégrée utilise du code non sécurisé pour effectuer la vérification d'égalité assez efficacement. –