string.ToLower()和string.ToLowerInvariant()
有什么区别和什么时候使用什么? 如果我总是使用ToLower(),那么风险是什么?如果我总是使用ToLowerInvariant(),那有什么风险?
取决于当前的文化,ToLower可能会产生一个文化特定的小写字母,而您并不期待。 如产生ınfo
而不是在我的点而不是info
,从而弥补了string比较。 出于这个原因,ToLowerInvariant应该用于任何非语言特定的数据。 当你可能有用户input,可能是他们的母语/字符集,通常是唯一一次使用ToLower。
有关此问题的示例,请参阅此问题: C# – ToLower()有时从字母“I”中删除点
我认为这可能是有用的:
http://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx
更新
如果您的应用程序依赖于以可预测方式更改的string不受当前区域性影响的情况,请使用ToLowerInvariant方法。 ToLowerInvariant方法等同于ToLower(CultureInfo.InvariantCulture)。 当一组string必须以可预测的顺序出现在用户界面控件中时,推荐使用该方法。
也
ToLower与ToLowerInvariant大多数地方非常相似。 文件表明,这些方法只会改变土耳其文化的行为。 此外,在Windows系统上,文件系统是不区分大小写的,这进一步限制了它的使用。
http://www.dotnetperls.com/tolowerinvariant-toupperinvariant
心连心
String.ToLower()
使用默认文化,而String.ToLowerInvariant()
使用不变文化。 所以你基本上要求不变的文化和顺序string比较之间的差异 。