C# 中字符串类型最快的内置比较方法是什么?我不介意印刷/语义含义:目的是在排序列表中使用比较器以便在大型集合中快速搜索。我认为只有两种方法:Compare
and CompareOrdinal
。什么是最快的?
此外,是否有更快的字符串比较方法?
我假设您想要小于/等于/大于比较而不仅仅是相等;尽管原则基本相同,但平等是一个略有不同的主题。如果你实际上只是在寻找presence在类似的事情中SortedList
,我会考虑使用Dictionary<string, XXX>
相反 - 你真的需要所有这些排序吗?
String.CompareOrdinal
,或使用重载String.Compare
它允许提供比较,并指定序数(区分大小写)比较,例如String.Compare(x, y, StringComparison.Ordinal)
将是最快的。
基本上是顺序比较just需要一个字符一个字符地遍历两个字符串,直到找到差异。如果没有发现任何差异,并且长度相同,则结果为 0。如果没有发现任何差异,但长度不相同,则较长的字符串被视为“较大”。如果它does找到差异,它可以立即根据哪个字符在序数方面“更大”来计算出哪个字符被视为“更大”。
换句话说:这就像在两个之间进行明显的比较char[]
values.
文化敏感的比较必须执行各种曲折的任务,具体取决于您使用的具体文化。有关此示例,请参阅这个问题 https://stackoverflow.com/questions/1371813。很明显,遵循更复杂的规则会使速度变慢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)