高效的字符串比较

本文关键字:比较 字符串 高效 | 更新日期: 2023-09-27 18:20:05

使用的原因可能是什么

bool result = String.Compare(fieldStr, "PIN", true).Equals(0);  

而不是

bool result = String.Equals(fieldStr, "PIN", StringComparison.CurrentCultureIgnoreCase);

或者,更简单的

bool result = fieldStr.Equals("PIN", StringComparison.CurrentCultureIgnoreCase);

用于将.NET中的两个字符串与C#进行比较?

我被分配到一个项目中,这个项目有一个很大的代码库,它放弃了使用第一个代码库进行简单的相等比较。我(还没有)找到那些资深人士使用这种方法的任何原因,而不是像第二种或第三种更简单的方法。Equals(静态或实例)方法是否存在性能问题?或者,使用String.Compare方法是否有任何特定的好处,甚至超过了对包含.Equals(0)的额外操作的处理?

高效的字符串比较

我不能给出直接的例子,但我怀疑在某些情况下,第一个会返回true,但第二个返回false。根据排序顺序,两个值可能相等,但即使在忽略大小写规则的情况下仍然是不同的。例如,一种文化可能决定在排序时不将重音视为重要,但仍然将两个仅在重音字符上不同的字符串视为不相等。(也有可能相反——两个字符串可能被认为相等,但其中一个在逻辑上先于另一个。)

如果您基本上对排序顺序而不是相等感兴趣,那么使用Compare是有意义的。如果要翻译代码(例如,对于LINQ),并且支持Compare的过载,但不支持Equals的过载,这也可能是有意义的。

我试着举一个他们不同的例子。我肯定会说这很罕见。编辑:到目前为止运气不好,尝试过口音、Eszet、土耳其语"I"处理和不同类型的空格。然而,这离说它不可能发生还有很长的路要走。