在C#中,对于一个Type
,有一个属性IsClass
,但如何确定一个Type
是一个结构体?
尽管IsValueType
是必要条件,但显然不足以确定 Type
是结构体,因为如 int
也是值类型。
有人建议使用以下代码:
bool IsStruct = type.IsValueType && !type.IsEnum && !type.IsPrimitive;
但是我不确定这是否是一种准确的方法。该公式应该能够区分结构体和其他类型,例如DateTime
、int
和array
。
正如一些朋友在这里指出的那样,我指的是用户定义的结构体而不是预定义的类型,例如DateTime
。