C# nullable не правильно определяет проблему? - PullRequest
3 голосов
/ 20 апреля 2020

Я работаю над миграцией проекта для поддержки значения 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;
            }
        }
    }
}
...