Ein C#-brukar kan definera eigne datatypar, bruka dei innebygde, eller frå .NET-rammeverket. Primitive datatypar vert automatisk konvertert mellom rein binærform og objektform ut ifrå kva brukaren brukar det til, dette vert kallaboxing ogunboxing.
C# støttar heiltal med og utan forteikn og flyttal opp til 128-bitar, men støttar ikkje 80-bitar [IEEE] flyttal (80-bitar).
I motsetnad til programmeringsspråka C og C++, støttar ikkje C# heiltal som boolske verdiar, men programmereren må eksplisitt bruka datatypen bool.