Pourrait comparaisons de chaînes de vraiment varier en fonction de la culture lorsque la chaîne est la garantie de ne pas changer?
Je suis en train de lire informations d'identification chiffrées/chaînes de connexion dans un fichier de config. Resharper me dit, "Chaîne de caractères.IndexOf(string) est spécifique de culture ici" sur cette ligne:
if (line.Contains("host=")) {
_host = line.Substring(line.IndexOf(
"host=") + "host=".Length, line.Length - "host=".Length);
...et donc veut le modifier:
if (line.Contains("host=")) {
_host = line.Substring(line.IndexOf("host=", System.StringComparison.Ordinal) + "host=".Length, line.Length - "host=".Length);
La valeur que je suis en train de lire sera toujours "host=" indépendamment de l'endroit où l'application peut être déployée. Est-il vraiment judicieux d'ajouter ce "Système.StringComparison.Ordinal" peu?
Plus important encore, pourrait-il nuire à quoi que ce soit (à utiliser)?
Vous devez vous connecter pour publier un commentaire.
Absolument. Par MSDN (http://msdn.microsoft.com/en-us/library/d93tkzah.aspx),
Sorte que vous pouvez obtenir des résultats différents si vous l'exécutez en vertu d'une autre culture (via les paramètres régionaux et linguistiques dans le Panneau de Contrôle).
Dans ce cas particulier, vous n'aurez probablement pas un problème, mais jeter un
i
dans la chaîne de recherche et de l'exécuter en Turquie et il sera probablement ruiner votre journée.Voir MSDN: http://msdn.microsoft.com/en-us/library/ms973919.aspx
Voici un exemple sans cas:
CA1309: UseOrdinalStringComparison
Il n'a pas d' mal à ne pas l'utiliser, mais "en définissant explicitement le paramètre pour le StringComparison.Ordinale ou StringComparison.OrdinalIgnoreCase, votre code permet souvent de gagner de la vitesse, augmente l'exactitude, et devient de plus en plus fiables.".
Qu'est-ce exactement est Ordinale, et pourquoi est-il important pour vous?
Et, comme vous l'avez dit... la chaîne de valeur de la lecture n'est pas la culture sensible, il est donc logique d'utiliser une comparaison Ordinale, par opposition à un Mot de comparaison. Rappelez-vous juste, Ordinale, signifie "ce n'est pas la culture sensible".
Pour répondre à votre question: Non, mais un outil d'analyse statique ne va pas être en mesure de se rendre compte que votre valeur d'entrée n'auront jamais les paramètres régionaux de l'information en elle.