Se fate qualcosa come hai detto tu, non andrà in blocco if, ed ecco perché:
Gli operatori sono applicati all'oggetto sulla sinistra. Quindi il codice è lo stesso di scrivere questa:
String myVar="in";
String testVar = myVar.ToUpper();
if(testVar=="in") //This will never be true
{
//do something
}
In tua modifica, ancora non sta testando se la stringa è == "IN", che si sta facendo 2 test per vedere se la stringa è == "in".
Se è stata modificata l'originale a questo che avrebbe funzionato:
String myVar="in";
if(myVar.ToUpper()=="IN")
{
//do something
}
La modifica dovrebbe essere così per testare entrambi i casi:
if((myVar.ToUpper().Equals("IN"))&&(myVar.Equals("in")))
EDIT: Alcuni ulteriori spiegazioni dal Commento di Steven:
if((myVar.ToUpper().Equals("IN"))&&(myVar.Equals("in")))
Questo esempio di codice esegue 2 confronti, ma se myVar sarà sempre e solo la versione caso misto s of in (IE: in In iN IN) quindi il secondo confronto non è necessario. Una volta convertita la stringa in ToUpper(), devi solo verificare se è uguale a IN. Quindi vorrei sostituire quella linea con:
if(myVar.ToUpper().Equals("IN"))
o
if(myVar.ToUpper() == "IN")
Io personalmente usare il == non il metodo .equals.
Il consiglio di Jon è solido, ma mi piacerebbe spiegare cosa è andato storto sopra. Se si desidera verificare che sia "in" e non si preoccupi del caso, si può fare "ToLower" e confrontarlo con "in" o "ToUpper" e confrontare con "IN". Non hai bisogno di confronti multipli. In ogni caso, raccomando ciò che Jon ha consigliato. –