C #: Confusion à propos de ToUpper () et ToLower ()
si je fais quelque chose comme ça...
String myVar = "in";
if(myVar.ToUpper() == "in")
{
//do something
}
Cela ne va pas aller à l'intérieur de bloc "if"..?
ou
Est-ce qu'il va vérifier à la FOIS pour les "à" ET "DE" et de faire tout ce qui est à l'intérieur que si? Si oui, pourquoi ? Ce n'est pas censé ignorer ce qui est à l'intérieur du bloc "if"?
Même confusion est d'environ ToLower()
trop
Modifier: pour vérifier les deux cas, j'ai besoin d'écrire:
if((myVar.ToUpper().Equals("in"))&&(myVar.Equals("in")))
Comme ça..?
source d'informationauteur Serenity
Vous devez vous connecter pour publier un commentaire.
Plutôt que de convertir en majuscules et en comparant ensuite, vous devez utiliser une comparaison d'égalité qui peut être fait à la casse. Par exemple:
Que vous devriez examiner attentivement exactement quelles sont les règles qui sont appropriés - ordinal, de la culture actuelle, l'invariant de la culture, ou éventuellement d'une autre culture (p. ex. à l'aide de
StringComparer.Create(culture, true)
).Pour plus de détails sur ce sujet, lire le MSDN Les meilleures Pratiques pour l'Utilisation des Chaînes dans le .NET Framework article.
L'expression
something.ToUpper().Equals("lowercaseletters")
ne sera jamais vraie, donc dans votre exemple, si le bloc ne sera pas exécuté. Et bien sûr, cela s'applique à ToLower;something.ToLower().Equals("UPPERCASE")
ne sera jamais vraie, soit."EN" n'est pas égal à "" - afin de ne pas exécuter le bloc if. Dans le cas de toLower() il exécute le bloc si "en" est égal à ""..
D'abord si vous voulez comparer des chaînes de caractères à utiliser .Equals()
Deuxième premier de tous les codes à l'intérieur de la si est exécutée seulement après que le retour est testé.
donc
ne pas "faire quelque chose".
Si vous faites quelque chose comme vous l'avez dit, il ne va pas dans le bloc si, et voici pourquoi:
Opérateurs sont appliqués à l'objet sur la gauche. Si votre code est le même que l'écriture de ce:
Dans votre montage, vous n'êtes toujours pas tester si votre chaîne est == "EN", vous sont en train de faire 2 tests pour voir si votre chaîne est == "en".
Si vous avez changé d'original à cela, il faudrait travailler:
Votre modification doit être comme ça pour tester les deux cas:
EDIT: de plus d'explications de Steven Commentaire:
Que l'exemple de code n'2 comparaisons, mais si myVar ne jamais être mélangées cas des versions de (IE: en en en en), alors la comparaison n'est pas nécessaire. Une fois que j'ai converti la chaîne de ToUpper(), vous avez uniquement besoin de vérifier si elle est égale à. Je voudrais donc remplacer cette ligne par:
ou
Je serais personnellement utiliser l' == pas le .Méthode Equals.