MS Analyzer рекомендует использовать string.IsNullOrEmpty
вместо того, чтобы сравнивать его с нулевой или пустой строкой по соображениям производительности.
Предупреждение 470 CA1820: Microsoft.Performance: замените вызов на string.operator == (string, string) 'in... с вызовом' String.IsNullOrEmpty '.
Почему? Не следует ли требовать вызова другой функции и передать ее ссылку на какой-то объект, который затем должен каким-то образом выполнить какое-либо сравнение, быть более дорогостоящим, чем само выполнение сравнения?
Пример кода
void Foo()
{ // throws a warning
string x = "hello world";
if (x == null || x == "")
{
Console.WriteLine("Empty");
}
}
void Foo()
{ // doesn't throw it
string x = "hello world";
if (string.IsNullOrEmpty(x))
{
Console.WriteLine("Empty");
}
}