Для a Type
, существует свойство IsClass
, но как знать a Type
структура?
Извините, я должен добавить еще некоторую информацию.
IsValueType
необходимое условие, это, достаточно очевидно. Поскольку Целое число является типом значения также. Если это тип значения (например, struct
), используйте Type.IsValueType
.
Если вы говорите о c#, вы можете использовать свойство IsValueType
.
Что ж, я полагаю, что для вашего требования это близко:
bool isStruct = myType.IsValueType && !myType.IsPrimitive;
, но все же, например, DateTime
этим не покрывается. Возможно, вам придется добавить дополнительные типы, которые вы хотите исключить вручную.
используйте это:
x.GetType().IsValueType();
Из справки:
Свойство Type :: IsValueType Получает значение, указывающее, является ли Тип значением type. Типы значений - это типы, представленные как последовательности битов; типы значений не являются классами или интерфейсами. В некоторых языках программирования типы значений называются «структурами». Перечисления - это особый случай типов значений.