Есть ли способ сообщить компилятору, что следующая проверка гарантирует, что Item не равен нулю и что он безопасен в остальной части кода и что предупреждение CS8601 не требуется?
Предупреждение, которое технически верно, не учитывает, что оно обрабатывается в последующей строке, и не требует генерации предупреждения.
Console.WriteLine("Hello, World!");
var test = new Test();
test.Init();
public class Test
{
public record Item(string Name, int Total);
public Item MyItem { get; set; } = null!;
public int MyItemTotal { get; set; }
public void Init()
{
MyItem = GetItems().FirstOrDefault();
if (MyItem == null)
{
return;
}
else
{
MyItemTotal = MyItem.Total;
}
}
private List GetItems()
{
return new List();
}
}
В приведенном выше коде MyItem = GetItems().FirstOrDefault(); отображается как предупреждение, что технически правильно. Однако следующая строка выполняет проверку и завершает работу. Я ищу способ сказать компилятору: «Я знаю и разберусь с этим, не нужно предупреждать».
Основная причина в том, что я не хочу игнорировать предупреждения. и мне не нужны прагмы по всему коду.
Есть ли простой способ сделать это?
РЕДАКТИРОВАТЬ >
Вот пример веб-страницы Razor, где, если MyItem имеет значение null, мы будем перенаправляться со страницы. В этом коде можно с уверенностью предположить, что MyItem никогда не будет иметь значение null. Но предупреждение будет отображаться всегда, поскольку элемент не имеет значения NULL.
public Item MyItem { get; set; } = null!;
public IActionresult OnGet()
{
MyItem = GetItems().FirstOrDefault();
if (MyItem == null)
{
return Redirect("/");
}
return Page();
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... s-performe