首页 > 解决方案 > c# String.Compare vs String.CompareOrdinal

问题描述

在 C# 中,String.CompareOrdinal(strA, strB)相当于String.Compare(strA, strB, StringComparison.Ordinal)?

我在https://msdn.microsoft.com/en-us/library/e6883c06.aspx检查了文档,但没有提到这一点。

标签: c#string

解决方案


他们都做同样的事情。您可以关注来自https://referencesource.microsoft.com的来源

  1. 公共静态int CompareOrdinal(字符串strA,字符串strB)

  2. 调用private unsafe static int CompareOrdinalHelper(String strA, String strB)

  1. 公共静态int比较(字符串strA,字符串strB,字符串比较比较类型)
  2. 调用private unsafe static int CompareOrdinalHelper(String strA, String strB)

代码路径几乎相同

事实上,唯一的区别是后者有一个快速检查,所以如果你有指令强迫症,你可以在统计上为你自己节省几个周期

   if ((strA.m_firstChar - strB.m_firstChar) != 0)
   {
        return strA.m_firstChar - strB.m_firstChar;
   }

推荐阅读