Я читал 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
также тест равенства? Я что-то пропустил или это ошибка документации?