如何识别Type是否为自定义结构?

时间:2010-02-18 13:09:24

标签: .net reflection struct types

对于Type,有一个属性IsClass,但如何知道Type是一个结构?

抱歉,我必须添加更多信息。

  1. 我正在使用C#。
  2. 虽然IsValueType是必要条件,但显然还不够。对于Integer,也是值类型。

6 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:3)

如果您在谈论c#,可以使用IsValueType属性。

答案 2 :(得分:1)

如果是值类型(例如,struct),请使用 Type.IsValueType

答案 3 :(得分:1)

您可以使用IsValueType

答案 4 :(得分:0)

那么,我想你的要求接近了:

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

但例如,DateTime仍未涵盖{{1}}。也许你必须手动添加你想要排除的其他类型。

答案 5 :(得分:-1)

使用它:

 x.GetType().IsValueType();

来自帮助:

Type :: IsValueType属性 获取一个值,该值指示Type是否为值类型。 值类型是表示为位序列的类型;值类型不是类或接口。值类型在某些编程语言中称为“结构”。枚举是值类型的特例。