Я создал обычный метод TryGet, но добавил атрибут NotNullWhen(true) к его параметру out, что означает, что переменная не может иметь значение null, если метод возвращает true. При дальнейшем использовании метода Райдер пишет предупреждение о том, что переменная может иметь значение null, несмотря на то, что метод возвращает true. Почему это происходит? Есть ли способ избавиться от предупреждения, не игнорируя его?
private bool TryGet(bool flag, [NotNullWhen(true)]out string? str)
{
if (flag)
{
str = "568";
return true;
}
else
{
str = null;
return false;
}
}
private int Test()
{
var test = TryGet(true, out var str);
var test2 = test ? int.Parse(str) : 0; //For "str": possible null reference argument
return test2;
}
Подробнее здесь: https://stackoverflow.com/questions/731 ... -is-presen
Мобильная версия