【发布时间】:2015-08-12 14:41:51
【问题描述】:
看下面的示例代码
var genericNullableType = typeof(Nullable<>);
var nullableType = genericNullableType.MakeGenericType(typeof(bool));
var returnValue = Activator.CreateInstance(nullableType, (object)false);
由于某种原因,returnValue 变量的类型将是 bool 而不是 bool?。为什么会这样?如何避免?
UPD:这是我的 VS 的屏幕截图
【问题讨论】:
-
@petelids 我使用的是 VS 2013 Premium 和 .NET Framework 4.5,构建配置是 Debug。你使用相同的配置吗?
-
这不是
Activator独有的。Console.WriteLine((new Nullable<bool>(false).GetType().FullName));也只是吐出普通的布尔值。 -
没有办法获得一个可空的盒装。运行时对可为空的装箱进行特殊处理,并将始终将其解包为基础类型的装箱值或空引用。也就是说它应该可以转换为
bool?,所以我不确定你在找什么。 -
这是 Brad Wilson Creating
Nullable<T>When You Don't Know T 的相关博文