В C# запись
T? используется в двух разных контекстах — и это может запутать даже опытных разработчиков.• Nullable Value Types
Тут
T? — это реально другой тип.int? — это Nullable<int>, со своими методами HasValue, Value.Вы получаете объект, который может быть пустым:
int? age = GetAge();
if (age.HasValue) Console.WriteLine(age.Value);
• Nullable Reference Types
А тут
T? — это не новый тип, а подсказка компилятору:«Эта ссылка может быть null — предупреди меня, если я забуду это проверить.»
Во время выполнения — всё равно просто T:
string? name = GetName();
Console.WriteLine(name.Length); // ⚠️ warning: возможно null!
Будьте внимательны: одинаковый синтаксис ≠ одинаковое поведение.
🐸Библиотека шарписта
#буст
