C# razlikuje tipove koji mogu biti od onih koji ne mogu. () omogućavaju vrijednosnim tipovima da sadrže null, (svojstvo kompajlera) pomažu u pronalaženju null bugova, a (, , ) čine rad s mogućim null vrijednostima čistim i sigurnim — rješavajući pervasivni problem null referencije.
