C# bën dallim midis tipeve që mund të jenë dhe atyre që nuk mund të jenë. () i lejojnë tipet e vlerave të mbajnë null, (një veçori kompajleri) ndihmojnë të zbulojnë bug-et me null, dhe (, , ) e bëjnë punën me vlera që mund të jenë null të pastra dhe të sigurta — adresojnë problemin përhapur të referencës null.
