Почему нет CS8604 (возможный нулевый эталонный аргумент для параметра) предупреждение в .NET STANDANTION 2.1C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему нет CS8604 (возможный нулевый эталонный аргумент для параметра) предупреждение в .NET STANDANTION 2.1

Сообщение Anonymous »

При работе с кодом .net Standard 2.1 я нашел странное поведение, когда должно было быть предупреждение о нулевом параметре, но он не: < /p>

, и я могу воспроизвести с помощью простого метода:

Код: Выделить всё

#nullable enable // making sure that nullability is enabled
static void Foo(IEnumerable? a = default)
{
Console.WriteLine(a.Count());

string? b = null;
Console.WriteLine(b.Length);
}
С приведенным выше кодом, скомпилированным в NetStandard2.1 , нет предупреждения для . Нулевой контекст работает, потому что есть CS8602 (Dereference of, возможно, нулевой ссылки) для b .
при переходе на Net8. 0 Например, компилятор правильно повышает CS8604 для . Это построено с использованием .NET 9 SDK. < /P>
Что здесь происходит? Это ошибка в компиляторе?

Подробнее здесь: https://stackoverflow.com/questions/794 ... er-warning
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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