Механизмы C# 10-13 переносят null-проверки из runtime в compile-time. Required поля, init setters убирают тонны защитного кода.