如何以编程方式检查类型是结构还是类?
最佳答案
使用Type.IsValueType
:
Gets a value indicating whether the Type is a value type.
像这样使用它:
typeof(Foo).IsValueType
或者像这样在执行时:
fooInstance.GetType().IsValueType
反过来还有一个Type.IsClass
属性(在我看来应该称为 IsReferenceType
但无论如何)根据您正在测试的内容,它可能更适合您的用途,也可能不适合您的用途。
如果没有 bool 否定,代码似乎总能更好地阅读,因此请使用有助于提高代码可读性的任何一种。
正如 Stefan 在下面指出的那样,为了正确识别结构,当涉及到枚举
时,您必须小心避免误报。 enum
是一种值类型,因此 IsValueType
属性将为 enums
和 结构返回
。 true
因此,如果您真的在寻找结构
,而不仅仅是一般的值类型,您需要这样做:
Type fooType = fooInstance.GetType();
Boolean isStruct = fooType.IsValueType && !fooType.IsEnum;
关于c# - 如何以编程方式检查类型是结构还是类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1827425/