Код: Выделить всё
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
string? myVariableString = Console.ReadLine();
int? myVariable;
try
{
myVariable = int.Parse(myVariableString!);
}
catch (FormatException)
{
myVariable = null;
}
Debug.Assert(myVariable.HasValue);
Console.WriteLine(myVariable!.Value);
}
}
Выражение подавления предупреждений, допускающее значение NULL, является избыточным
Почему это так? Что гарантирует компилятору/статическому анализатору его избыточность?
Доказательство:

Я использую .NET = 10.0.104 и пишу код в JetBrains Rider 2026.1.0.1 на компьютере с Windows 11.