When I declare an int as nullable
int? i=null;
Does i here become a reference type?
Nullable types are neither value types nor reference types. They are more like value types, but have a few properties of reference types.
Naturally, nullable types may be set to null. Furthermore, a nullable type cannot satisfy a generic struct constraint. Also, when you box a nullable type with HasValue equal to false, you get a null pointer instead of a boxed nullable type (a similar situation exists with unboxing).
These properties make nullable types non-value types, but they sure aren't reference types either. They are their own special nullable-value type.
You shouldn't need to make a reference type a nullable type as you can pass null in its place.
No, the Nullable type is in fact a struct. The runtime will intelligently handle the setting of a null value for you, giving the appearance of a reference type, when it's not....
From Nullable Types (C# Programming Guide):
Nullable types are instances of the System.Nullable struct.
and
Nullable types represent value-type variables that can be assigned the value of null. You cannot create a nullable type based on a reference type. (Reference types already support the null value.)
So, no they're not reference types.
Nullable types cannot be reference types.
http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx
No, a nullable is a struct. What is happening is that the nullable struct has two values:
int for int?, DateTime for DateTime?, etc.).HasValue is the property.)When you set the value of the data type, the struct changes HasValue to true.
Nullable types (C# Programming Guide)