C#8 имеет значение null: string.IsNullOrEmpty не воспринимается компилятором как средство защиты от нуляC#

Место общения программистов C#
Ответить
Anonymous
 C#8 имеет значение null: string.IsNullOrEmpty не воспринимается компилятором как средство защиты от нуля

Сообщение Anonymous »

Я использую C# 8 с .NET Framework 4.8

В настоящее время я защищаюсь от потенциальной строки, которая может иметь значение NULL с помощью IsNullOrWhitespace (та же проблема с IsNullOrEmpty), но компилятор все еще жалуется:

Код: Выделить всё

public MyImage? LoadImage(string? filename)
{
if (string.IsNullOrWhiteSpace(filename))
{
return null;
}
return OtherMethod(filename); // here : warning from Visual Studio
}

// signature of other method :
public MyImage OtherMethod(string filepath);
Изображение


в настоящее время у меня есть обходные пути, позволяющие компилятору понять:
  • использовать имя файла оператора, допускающее нулевое значение!
  • отключить предупреждение с помощью #pragma alert отключить CS8604 // Возможная нулевая ссылка аргумент.
  • добавить еще одну проверку на значение null if(string == null || string.IsNullOrWhitespace(filename))
Но ничего из этого не кажется удовлетворительным, главным образом потому, что мне придется повторять обходной путь для каждого вызова IsNullOrEmpty.

Есть ли другой способ узнать компилятор, который IsNullOrEmpty эффективно защищает от нуля ?

Подробнее здесь: https://stackoverflow.com/questions/603 ... elping-for
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»