为什么((int?)1).GetType()返回typeof(int)?

lar*_*moa 8 .net c# nullable .net-4.0

可能重复:
Nullable类型不是可空类型?
为什么GetType返回System.Int32而不是Nullable <Int32>?

我期望((int?) 1).GetType()回来typeof(int?),但事实证明它返回typeof(int):

bool a = ((int?)1).GetType() == typeof(int?); // a is false
bool b = ((int?)1).GetType() == typeof(int); // b is true
Run Code Online (Sandbox Code Playgroud)

仍然,((int?) 1).HasValue编译和运行等代码就好了.

为什么铸造intint?返回int

请注意,如果我1用一些int-variable 替换constant(),这也适用.