Microsoft のBest Practices for Using Strings in the .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);
}
2 番目のバージョンの方が優れている理由を理解するのに苦労しています。CompareTo
(比較)からEquals
(等価)への切り替えは理解できましたがStartsWith
、等価テストでもありませんか?何か不足していますか、それともドキュメントのバグですか?