【发布时间】:2014-01-25 06:28:23
【问题描述】:
我想检查一个类型是否是原始类型并使用以下代码:
return type.IsValueType && type.IsPrimitive;
只要原语不是可空的,它就可以正常工作。例如 int?,如何检查该类型是否为可为空的原始类型? (仅供参考:type.IsPrimitive == false 在 int 上?)
【问题讨论】:
-
您需要识别可以为空的类型,然后深入研究它们以获取封闭的泛型类型:stackoverflow.com/questions/5644587/…
Nullable<T>不是原始的,它只是一个struct对其他struct的包装器具有额外编译器支持的类型。 -
那个
int?是Nullable<int>的简写,所以不报原语是正确的。 -
Nullables 使用 Generic 类型,根据定义它不是原始类型。试试下面的建议:)
-
你真正想要达到什么目的?我问是因为通常有比使用反射更好的方法。
-
@TimSchmelter 我正在做一个深度克隆并使用以下 (stackoverflow.com/a/11308879/2598770) 但我想对其进行一些修改并注意到 IsPrimitive 的检查不关心可空整数。