What is the integer reference type in C#?

c#

Solution

For info, `int?` / `Nullable<T>` is not a reference-type; it is simply a "nullable type", meaning: a struct (essentially and `int` and a `bool` flag) with special compiler rules (re null checks, operators, etc) and CLI rules (for boxing/unboxing). There is no "integer reference-type" in .NET, unless you count boxing:

int i = 123;
object o = i; // box

but this creates an unnecessary object and has lots of associated other issues.

For what you want, `int?` should be ideal. You could use the long-hand syntax (`Nullable<int>`) but IMO this is unnecessarily verbose, and I've seen it confuse people.

Problem

I'd like to have an integer variable which can be set to null and don't want to have to use the `int? myVariable` syntax. I tried using `int` and `Int16` to no avail. Do I have to use `int? myVariable`? I mentioned this because in Java there is both an 'int' type (a primitive) and 'Integer' (a reference type). I wanted to be sure that there isn't a built-in integer reference type that I could be using. I'll use 'int?' for what I'm doing.

Original source