Я использую сравнения строк для проверки URL-адресов с помощью StringComparison.OrdinalIgnoreCase
.
MSDN дает следующий совет по сравнению с текстом ЗДЕСЬ, но не уточняет ПОЧЕМУ:
Пример MSDN (на полпути вниз по приведенной выше странице):
public static bool IsFileURI(string path)
{
path.StartsWith("FILE:", StringComparison.OrdinalIgnoreCase);
return true;
}
Совет MSDN:
"Однако в предыдущем примере используется метод 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);
}
ВОПРОС: Почему MSDN предлагает второй пример лучше?
Точки обсуждения:
-
Очевидно, что
return true;
в первом примере является ошибкой и должен бытьreturn path.StartsWith(...);
. Мы можем смело игнорировать это как ошибку, так как правильный код VB. -
Создание подстроки перед сравнением для равенства, по-видимому, будет использовать только другой ресурс памяти, чем просто вызов String.StartsWith().
-
Длина < 5 - хорошее короткое замыкание, однако его можно использовать с прежним кодом точно так же.
-
Второй пример может быть истолкован как более четкий код, но я заинтересован в производительности. Создание подстроки кажется ненужным.