A C# megkülönböztet olyan típusokat, amelyek lehetnek , és amelyek nem. A () lehetővé teszik az érték típusok számára a null tárolását, a (fordító funkció) segítsenek elkapni a null hibákat, és a (, , ) tisztává és biztonságossá teszik a lehetséges null értékek kezelését — megoldva az átható null-referencia problémát.
