Как устранить предупреждение о назначении нулевой ссылки, когда выполняется и обрабатывается проверка, допускающая значеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как устранить предупреждение о назначении нулевой ссылки, когда выполняется и обрабатывается проверка, допускающая значе

Сообщение Anonymous »

Есть ли способ сообщить компилятору, что следующая проверка гарантирует, что 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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