#c# #.net #nullable-reference-types
#c# #.net #nullable-reference-types
Вопрос:
У меня есть следующий общий метод:
public static T? Foo<T> (string param1, T? param2)
where T : class, IEnumerable
{
// ...
}
Я получаю следующую ошибку компилятора:
Ошибка CS8627: параметр типа с нулевым значением должен быть известен как тип значения или ненулевой ссылочный тип, если не используется языковая версия ‘9.0’ или выше. Подумайте об изменении языковой версии или добавлении ограничения «класс», «структура» или «тип».
Однако, как вы можете видеть, я уже добавил ограничение «класс». Итак, что еще мне здесь не хватает?
VS 2019 16.8.1
Комментарии:
1. Он отлично компилируется для меня на sharplab …
2. Я только что понял, что это может быть связано со старым форматом csproj, который мы используем.
3. Тангенциальный: что изменилось в C # 9.0, что это больше не требуется? Я не могу найти никакой информации об этом
4. @D.R. вы можете быть правы. Функция является частью C # 8 ( docs.microsoft.com/en-us/dotnet/csharp/nullable-references ), который доступен в .NET Core 3.X и .NET Standard 2.1 ( docs.microsoft.com/en-us/dotnet/csharp/nullable-references ). Старый csproj предназначен для .NET Framework и не поддерживает C # 8.