Я работаю над миграцией проекта для поддержки значения C# 8.0, но могу столкнуться с ситуацией, когда Visual Studio неправильно определяет нулевое значение. Если вы посмотрите на приведенный ниже код в конструкторе TestClass, метод Console.WriteLine сгенерирует исключение NullReferenceException, поскольку this.Value имеет значение null и еще не назначено. Там нет никаких предупреждений или ошибок от VS, хотя, он думает, что все в порядке здесь. Я что-то упустил, разве VS не должен предупреждать об этом? Значение здесь определенно равно нулю. Спасибо!
#nullable enable
namespace TestNullable
{
public static class Program
{
public static void Main(string[] args)
{
TestClass test = new TestClass("MyString");
}
public class TestClass
{
private readonly string Value;
public TestClass(string value)
{
System.Console.WriteLine(this.Value.Length.ToString());
this.Value = value;
}
}
}
}