为什么在进行不区分大小写的字符串比较时要避免使用string.ToLower()?

Cod*_*ess 3 .net string performance tolower

我已经读过,在您的应用程序中,您进行了大量的字符串比较并使用ToLower方法,这种方法非常昂贵.我想知道有谁可以向我解释它是多么昂贵.非常感谢任何信息或解释.谢谢!

Wai*_*Lee 9

另请参阅编写文化安全托管代码,这是为什么不使用它们的一个很好的理由ToLower().

特别是,请参阅土耳其语"I"部分 - 它在我工作的过去没有引起任何问题......

如果目前的文化是土耳其语或阿塞拜疆语,则呼叫"I".ToLower()将不会返回"i".对此进行直接比较会导致问题.


oɔɯ*_*ɯǝɹ 7

除了在其他答案中提到的方法之外,使用String.Compare(String,String,StringComparison)方法还有另一个优点:

您可以传递null值并仍然获得相对比较值.这使得编写字符串比较变得更加容易.

String.Compare(null, "some StrinG", StringComparison.InvariantCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

从文档:

一个或两个比较可以为.根据定义,任何字符串(包括空字符串(""))都会比较大于空引用; 和两个空引用比较相等.


500*_*ror 5

这是昂贵的,因为新的字符串是"制造"的.

将其与调用相比较,例如,Equals与重载请求不区分大小写的比较.一旦识别出不匹配,这允许比较终止,而不必创建新的字符串.