jeg ved godt det er lidt sent, og jeg har umiddelbart ikke noget at tilføje, bortset fra at forklaringerne der her er kommet har været lidt rodede.
Det er rigtigt, at int, string, decimal m.fl. er c#-keywords som henviser til de respektive klasser/structs (Int32, String, Decimal). Bemærk, at Int32 IKKE er en klasse, men en STRUCT !!
Grunden til at man ikke kan skrive
int i = null
er at det kun er referencetypes (typer der arver fra Object) som kan have en null-reference, og i og med at Int32 er en struct (arver fra ValueType), er det ikke en referencetype og kan derfor heller ikke have en null-reference.
String til gengæld er en referencetype, den arver fra object (
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemstringclasssplittopic.asp), og man kan derfor sætte den til at være null (variabel peger altså på ingenting).