Wenn Sie etwas tun, wie Sie gesagt haben, wird es nicht gehen in den Block, wenn, und hier ist der Grund:
Operatoren auf der linken Seite auf das Objekt angewendet werden. So Ihr Code ist das gleiche wie das Schreiben dieses:
String myVar="in";
String testVar = myVar.ToUpper();
if(testVar=="in") //This will never be true
{
//do something
}
In Ihrem bearbeiten, Sie testen immer noch nicht, ob die Zeichenfolge ist == „IN“, Sie 2 Tests tun, um zu sehen, wenn Ihr String == "im".
Wenn Sie Ihr Original auf das geändert würde es funktionieren:
String myVar="in";
if(myVar.ToUpper()=="IN")
{
//do something
}
Ihre bearbeiten wie diese beiden Fälle zu prüfen sein sollte:
if((myVar.ToUpper().Equals("IN"))&&(myVar.Equals("in")))
EDIT: Einige weitere Erklärung von Steven Kommentar:
if((myVar.ToUpper().Equals("IN"))&&(myVar.Equals("in")))
Dieses Codebeispiel führt 2 Vergleiche durch, aber wenn myVar nur eine gemischte Fallversion sein wird s von in (IE: in In IN IN) ist dann der zweite Vergleich nicht notwendig. Sobald ich die Zeichenfolge in ToUpper() konvertiert habe, müssen Sie nur überprüfen, ob es gleich IN ist. So würde ich diese Zeile mit ersetzen:
if(myVar.ToUpper().Equals("IN"))
oder
if(myVar.ToUpper() == "IN")
Ich persönlich würde die Verwendung == nicht die .Equals Methode.
Jon's Rat ist solide, aber ich würde gerne erklären, was oben falsch gelaufen ist. Wenn Sie prüfen wollen, ob es "in" ist und sich nicht um Groß-/Kleinschreibung kümmert, können Sie entweder "Nachher" und mit "In" oder "ToUpper" vergleichen und mit "IN" vergleichen. Sie brauchen nicht mehrere Vergleiche. In jedem Fall empfehle ich, was Jon empfohlen hat. –