对于a Type,IsClassC#中有一个属性,但如何判断a Type是一个结构?
虽然IsValueType是必要条件,但显然还不够.对于a int也是值类型.
有人建议使用以下代码:
bool IsStruct = type.IsValueType && !type.IsEnum && !type.IsPrimitive;
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否是一种准确的方法.式应该告诉结构和其它类型的诸如之间的差DateTime,int和array第
正如一些朋友指出的那样,我指的是用户定义的结构而不是预定义的类型,例如DateTime.
从技术上讲,int也是一个结构.IsPrimitive只是检查类型是否是CLR处理的原始类型之一.你应该对这个建议没问题IsValueType && !IsEnum && !IsPrimitive.
如果您只想要自定义结构(即那些不是由BCL提供的结构),您可能会幸运地排除具有FullName的类型,该类型"System."通过程序集或命名空间过滤或仅包含您感兴趣的类型,或使用自定义属性.