C# razlikuje med tipi, ki lahko vsebujejo , in tistimi, ki ga ne morejo. () omogočajo vrednostnim tipom, da vsebujejo null, (značilnost prevajalnika) pomagajo zaznati null napake, in (, , ) naredijo delo z morebitno null vrednostmi čisto in varno — naslovljejo problem, ki je splošen pri null referencah.
