Получение предупреждения CS8602 при разыменовании ненулевой переменной - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть следующий код в библиотеке классов с использованием недавно выпущенных .NET Core 3 и C # 8 (новый проект, не переносящий существующий).

public Address(Address @base, string? street = null, string? number = null, string? postalCode = null,
    string? city = null, string? state = null, string? country = null, string? other = null) {    
    _street = street ?? @base.Street;
    _number = number ?? @base.Number;
    _postalCode = postalCode ?? @base.PostalCode;
    _city = city ?? @base.City;
    _state = state ?? @base.State;
    _country = country ?? @base.Country;
    _other = other ?? @base.Other;
}

Здесь переменная @base не имеет значения nullable.Тем не менее, я получаю предупреждение CS8602 о том, что я могу разыменовывать переменную Nullable.Я даже пытался добавить следующий блок до назначения переменных.

if (@base == null) {
    throw new ArgumentNullException(nameof(@base));
}

Свойства Street, Number, PostalCode и т. Д., Все они возвращают строку, т. Е. Ненулевые строки.Что я делаю не так, почему CS8602 выскакивает?Насколько я могу сказать, это не должно.

Я использую VS2019 v16.3.0, на случай, если это поможет.Спасибо!

...