Я использую C# 8 с. NET framework 4.8
В настоящее время я защищаю от потенциальной строки, которая может быть нулевой с 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);

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