يميز C# بين الأنواع التي يمكن أن تكون وتلك التي لا يمكن أن تكون كذلك. () تسمح للأنواع القيمية بأن تحمل null، و (ميزة المترجم) تساعد على اكتشاف أخطاء null، و (, , ) تجعل العمل مع القيم التي قد تكون null نظيفًا وآمنًا — لمعالجة مشكلة المرجع الفارغ المنتشرة.
