假设:
string texto = "Texto a convertir en mayúscula.";
MessageBox.Show("Texto con ToUpper: " + texto.ToUpper() +
"\nTexto con ToUpperInvariant: " + texto.ToUpperInvariant(),
"Mensaje en Mayúscula", MessageBoxButtons.OK, MessageBoxIcon.Information);
结果是一样的:
带有
ToUpper()
:“要转换为大写的文本。”带有
ToUpperInvariant()
:“要转换为大写的文本。”
编辑:
根据描述
ToUpperInvariant
:应用所有语言的文化大小写规则。
有什么区别,结果可能不同的任何示例?
ToUpper()
: 考虑系统默认区域性的规则来确定如何将字符串转换为大写。ToUpperInvariant()
: 使用所谓的文化中性来确定将字符串转换为大写的规则。实际上,对于我们常用的英语或西班牙语的绝大多数字母,这两种方法之间确实没有区别。
但从理论上讲,如果我们正在开发一个具有非常特殊文化和更多特殊字符的系统,那么您可能会注意到差异。
例如,改编这个 SO answer中的示例,我们可以看到,如果我们在默认文化为土耳其语的网站上工作,那么我们会看到
i
大写 a 的转换方式有所不同:Demo
结果:
所以通常最好使用它
ToUpperInvariant()
来保证稳定的结果,除非我们有特殊需要考虑到某种文化的规则。我给你留了一个链接来解释差异,唯一的问题是 StackOverFlow 是英文的,但如果你翻译它,你就会明白它的含义:
https://stackoverflow.com/questions/3550213/in-c-sharp-what-is-the-difference-between-toupper-and-toupperinvariant
希望这可以帮到你。
干杯