C# er typestærkt hvilket har en del betydning for hvordan man programmerer i sproget. En type er en samling data med tilhørende operationer.
i C# skælnes der overordnet mellem to slags typer nemlig værdityper og referencetyper.
Under værdityperne hører simple typer, struct og enum. En værditype indeholder en kopi af den værdi der er blevet givet den i modsætning til en referencetype der indholder en reference eller et "link" til den givne værdi.
Der er overordnet to forskellige simple typer. Der er booleske, altså typer der kan have værdien true || false. Derudover er der de forskellige numeriske typer:
Type | Eksempel | Std. værdi | Interval (min/maks) |
bool | true | false | false,true |
char | 'B' | '\u0000' | '\u0000' ... '\uFFFF' |
sbyte | -100 | 0 | -128 .. 127 |
byte | 200 | 0 | 0 .. 255 |
short | -25000 | 0 | -32768 .. 32767 |
ushort | 5000 | 0 | 0 .. 65535 |
int | -250000 | 0 | ?2147483648 ... 2147483647 |
uint | 250000 | 0 | 0 ... 4294967295 |
long | -25000000L | 0 | ?9223372036854775808 ... 9223372036854775807 |
long | 25000000UL | 0 | 0 ... 18446744073709551615 |
float | -1.20F | 0.0 | +/-10^{-44} ... +/-10^{38} |
double | -1.20 | 0.0 | +/-10^{-323} ... +/-10^{308} |
decimal | -1.20M | 0.0 | +/-10^{-28} ... +/-10^{28} |
Hvor u som prefix står for unsigned, altså uden fortegn. Til hver af de numeriske typer hører de aritmetiske operatorer: +,-,*,/.
En referencetype er enten en klasse, et interface, et array eller en delegate. En referencevariabel indholder enten værdien null eller en reference til en referencetype der befinder sig på heapen. Hvis en variabel bliver tildelt en referencetype, bliver denne type altså ikke kopieret, men kun linket eller peget på. null kan være af en vilkårlig referencetype.
Det sidste om typer er absolut ikke sagt, de er meget centrale. Men mer senere.