Dans certaines langues (E.G. C ++), vous ne pouvez pas utiliser les opérateurs comme == pour les comparaisons de chaîne, car cela comparerait l'adresse de l'objet String et non la chaîne elle-même. Cependant, en C #, vous pouvez utiliser == pour comparer les chaînes et comparera en fait le contenu des chaînes. Mais il y a aussi des fonctions de chaîne pour gérer de telles comparaisons, alors ma question est donc; devrais-tu?
donné deux chaînes: p> Si vous les comparez comme ceci: p> ou devriez-vous utiliser l'égal Fonction, comme ceci: P> bool areEqual = aa.Equals(bb);
5 Réponses :
Je n'utiliserais pas: sauf si je savait fort> mais j'aurais principalement utilisé que je souhaitais utiliser l'un des modes spécifiques est bien. P> p> aa code> ne pouvait pas éventuellement em> être nul. Je pourrais utiliser: p>
stringcomparison code> (invariant, ordinal, case -Sensible, etc.). Bien que je puisse également utiliser les implémentations code> stringcomparer code>, car ils sont un peu plus faciles à résumer (par exemple, de passer dans un dictionnaire
dictionnaire
Il n'y a pas de différence technique (sauf si AA n'est nul). Utilisez tout ce qui vous semble meilleur. À mon avis, l'utilisation des surcharges de l'opérateur rend le code plus clair. P>
Utilisez des fonctions lorsque vous avez besoin (ou pourraient avoir besoin à l'avenir) leurs arguments supplémentaires (comme dans le comparète ()) p>
best-pratique-sage, j'aurais tendance à toujours utiliser une fonction égale () pour la comparaison des chaînes. Cela indique clairement lorsque quelqu'un d'autre lit votre code que vous souhaitez spécifiquement les chaînes comparées. P>
... par opposition à la comparaison spécifique des références d'objet
En règle générale, == L'égalité du pointeur, tandis que les angles vérifient si les attributs sont égaux. Donc, si vous avez fait quelque chose comme
a = 'a'; b = 'a'; bool c = (a == b); bool d = (a.Equals(b))
Il vraiment b> dépend de ce que a code> et
b code> sont saisis comme ici. S'ils sont
chaîne code>, il ne compilera pas. S'ils sont
Char code>, il sera
vrai code> deux fois. S'ils sont
objet code>, il sera
false code> /
vrai code>. Mais aucune de ces personnes ne correspondent à la question (et vous auriez besoin de surveiller également le compilateur.
Pas nécessairement que .NET utilise la chaîne interne, ce qui signifie que cela pourrait réellement être la même chaîne sous les couvertures.
@RCIX - qui ne s'appliquerait que pour string a = "A"; String b = "A"; code>, mais oui, je suis d'accord.
@RCIX - ou plus important encore, objet a = "a"; objet b = "a"; code>
Ceci est la mise en œuvre de l'opérateur:
public static bool operator == (String a, String b) { return String.Equals(a, b); }
Maintenant, c'est utile de savoir! :-) Pas de sommeil perdu de toute façon - je me demandais vraiment s'il y a une meilleure pratique.
QuiBble mineur: En C ++,
STD :: String Code> peut être comparé à l'opérateur ==. C'est
caractère [] code> et
char * code> qui ne peut pas. Le terme string i> est quelque peu ambigu à C ++.
Merci d'avoir refusé ça! Cela fait longtemps que je faisais C ++, et il est évident que mes archives sont un peu bourdonnées ..