У меня есть следующий код в библиотеке классов с использованием недавно выпущенных .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, на случай, если это поможет.Спасибо!