C # 8 nullable: string.IsNullOrEmpty не понимается компилятором как помощь для защиты от нуля - PullRequest
1 голос
/ 25 февраля 2020

Я использую 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);

Hint / warning from VS : 'filename' may be null here.

В настоящее время у меня есть обходные пути, чтобы компилятор понял:

  • используйте нулевой оператор прощения filename!
  • отключите предупреждение с помощью #pragma warning disable CS8604 // Possible null reference argument.
  • добавьте еще одну проверку для нуля if(string == null || string.IsNullOrWhitespace(filename))

Но ни один из этих вариантов не кажется удовлетворительным, главным образом потому, что мне нужно будет повторять обходной путь для каждого вызова IsNullOrEmpty.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...