C# erottaa tyypit, jotka voivat olla , niistä, jotka eivät voi. () sallivat arvotyyppien sisältää null-arvon, (kääntäjän ominaisuus) auttavat havaitsemaan null-virheet, ja (, , ) tekevät mahdollisesti null-arvoisten arvojen käsittelystä puhdasta ja turvallista — ratkaisemalla laajalle levinneen null-viiteongelman.
