Ser*_*ity 11 c# string-comparison
如果我做这样的事......
String myVar = "in";
if(myVar.ToUpper() == "in")
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
这不会进入"if"阻止..正确吗?
要么
它是否会检查"in"和"IN"中的内容并执行其中的内容if if?如果是这样,为什么呢?是不是应该跳过"if"块里面的内容?
同样的混乱也是ToLower()
如此
编辑:所以要检查两种情况,我需要写:
if((myVar.ToUpper().Equals("in"))&&(myVar.Equals("in")))
Run Code Online (Sandbox Code Playgroud)
像这样......好吗?
Jon*_*eet 51
您应该使用可以不区分大小写的相等比较,而不是转换为大写然后进行比较.例如:
if (myVar.Equals("in", StringComparison.OrdinalIgnoreCase))
{
...
}
Run Code Online (Sandbox Code Playgroud)
您应该仔细考虑哪些规则是合适的 - 序数,当前文化,不变文化,或者可能完全是另一种文化(例如使用StringComparer.Create(culture, true)
).
有关此内容的更多详细信息,请阅读.NET Framework中的MSDN 使用字符串最佳实践一文.
表达式something.ToUpper().Equals("lowercaseletters")
永远不会成立,因此在您的示例中,if-block将不会被执行.当然,这也适用于ToLower; something.ToLower().Equals("UPPERCASE")
永远也不会是真的.