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 检查了文件,它没有提到这一点。

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

  1. public static int CompareOrdinal(String strA, String strB(

  2. Calls private unsafe static int CompareOrdinalHelper(String strA, String strB(

  1. public static int Compare(String strA, String strB, StringComparison comparisonType(
  2. Calls private unsafe static int CompareOrdinalHelper(String strA, String strB(

代码路径几乎相同

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

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