Nếu bạn làm điều gì đó như bạn nói, nó sẽ không đi vào nếu khối, và đây là lý do:
nhà khai thác được áp dụng cho các đối tượng ở bên trái. Vì vậy, mã của bạn cũng giống như bài viết này:
String myVar="in";
String testVar = myVar.ToUpper();
if(testVar=="in") //This will never be true
{
//do something
}
Trong chỉnh sửa của bạn, bạn vẫn không kiểm tra nếu chuỗi của bạn là == "IN", bạn đang làm 2 bài kiểm tra để xem nếu chuỗi của bạn là == "trong".
Nếu bạn đã thay đổi ban đầu của bạn vào đó nó sẽ làm việc:
String myVar="in";
if(myVar.ToUpper()=="IN")
{
//do something
}
chỉnh sửa của bạn nên được như thế này để kiểm tra cả hai trường hợp:
if((myVar.ToUpper().Equals("IN"))&&(myVar.Equals("in")))
EDIT: Một số giải thích thêm từ Comment của Steven:
if((myVar.ToUpper().Equals("IN"))&&(myVar.Equals("in")))
Mẫu mã đó có 2 so sánh, nhưng nếu myVar sẽ chỉ bao giờ là phiên bản trường hợp hỗn hợp s trong (IE: trong In iN IN) thì so sánh thứ hai là không cần thiết. Khi tôi đã chuyển đổi chuỗi thành ToUpper(), bạn chỉ cần kiểm tra xem nó có bằng IN hay không. Vì vậy, tôi sẽ thay thế mà phù hợp với:
if(myVar.ToUpper().Equals("IN"))
hoặc
if(myVar.ToUpper() == "IN")
Cá nhân tôi sẽ sử dụng == không phải là phương pháp Equals.
Lời khuyên của Jon rất vững chắc, nhưng tôi muốn giải thích những gì đã xảy ra ở trên. Nếu bạn muốn kiểm tra nó là "in" và không quan tâm đến case, bạn có thể làm 'ToLower' và so sánh với" in "hoặc' ToUpper' và so sánh với 'IN'. Bạn không cần nhiều so sánh. Trong mọi trường hợp, tôi khuyên bạn nên làm những gì Jon khuyên. –