As mentioned earlier,
the CLS says that each .NET language must provide:
-
value types
-
primitive types,
-
struct types,
-
enumerations
-
reference types
-
class types,
-
interface types,
-
array types,
-
delegate types
As well as value types and reference types,
C# also has pointer types.
These can only be used in code marked as
unsafe.
So, we will ignore pointer types.