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比较之间的差异 。