我正在阅读 Microsoft在 .NET Framework 中使用字符串的最佳实践。
它给出了以下示例作为介绍StringComparison.OrdinalIgnoreCase
:
public static bool IsFileURI(string path)
{
return path.StartsWith("FILE:", StringComparison.OrdinalIgnoreCase);
}
到目前为止,一切都很好。但它接着说:
但是,前面的示例使用该
String.StartsWith(String, StringComparison)
方法来测试是否相等。因为比较的目的是测试是否相等而不是对字符串进行排序,所以更好的选择是调用该Equals
方法,如下例所示。
public static bool IsFileURI(string path)
{
if (path.Length < 5) return false;
return String.Equals(path.Substring(0, 5), "FILE:",
StringComparison.OrdinalIgnoreCase);
}
我很难理解为什么第二个版本更好。我可以理解从CompareTo
(比较)到Equals
(平等)的转换,但不StartsWith
也是平等测试吗?我错过了什么还是这是一个文档错误?