How to identify if a Type is a custom struct?

2019-06-17 02:01发布

问题:

For a Type, there is a property IsClass, but how to know a Type is a struct?

Sorry, I have to add some more information.

  1. I am using C#.
  2. Although IsValueType is a necessary condition, it is obviously not enough. For an Integer is a value type also.

回答1:

t.IsValueType && !t.IsPrimitive && !t.IsEnum;


回答2:

If you are talking about c#, you can use the IsValueType property.



回答3:

If it's a value type (e.g., a struct), use Type.IsValueType.



回答4:

You can use IsValueType.



回答5:

Well then, I guess for your requirement then this comes close:

bool isStruct = myType.IsValueType && !myType.IsPrimitive;

but still DateTime isn't covered by that for example. Maybe you would have to add further types you want to exlude manually.



回答6:

use this:

 x.GetType().IsValueType();

From help:

Type::IsValueType Property Gets a value indicating whether the Type is a value type. Value types are types that are represented as sequences of bits; value types are not classes or interfaces. Value types are referred to as "structs" in some programming languages. Enums are a special case of value types.