2

我从我的 TL 那里得到了一个提示,我不应该只使用 string.compare,因为我正在使用编程字符串。他到底想说什么?我们有关于弦乐的文化信息吗?使用 stringComparision.Ordinal 有什么好处?

4

2 回答 2

2

如果您不指定任何比较选项,该String.Compare方法将默认使用当前文化设置进行文化相关比较。这意味着使用该特定文化的排序顺序比较字符。

如果您指定Ordinal比较,则仅根据字符的 Unicode 字符代码比较字符。

使用序数比较的一个好处是它更快。如果您要进行大量比较,这将很重要。

比较结果不同的示例:

Console.WriteLine(String.Compare("å", "ä"));
Console.WriteLine(String.Compare("å", "ä", StringComparison.Ordinal));

输出:

-1
1
于 2013-03-22T12:56:01.200 回答
1

字符串比较将使用当前的文化,即操作系统具有的文化(如果您转到 Windows 中的区域设置,您可以更改它)

这是来自 msdn:

比较使用当前文化来获取特定于文化的信息,例如大小写规则和单个字符的字母顺序

如果您不希望文化成为问题,您始终可以像这样指定比较:

String.Compare("a", "a", StringComparison.InvariantCulture);
于 2013-03-22T12:46:05.017 回答