Как определить, является ли тип пользовательской структурой? - PullRequest
7 голосов
/ 18 февраля 2010

Для Type существует свойство IsClass, но как узнать, Type - это структура?

Извините, я должен добавить еще немного информации.

  1. Я использую C #.
  2. Хотя IsValueType является необходимым условием, этого явно недостаточно. Целое число также является типом значения.

Ответы [ 6 ]

10 голосов
/ 17 августа 2010
t.IsValueType && !t.IsPrimitive && !t.IsEnum;
3 голосов
/ 18 февраля 2010

Если вы говорите о c #, вы можете использовать свойство IsValueType.

1 голос
/ 18 февраля 2010

Вы можете использовать IsValueType.

1 голос
/ 18 февраля 2010

Если это тип значения (например, struct), используйте Type.IsValueType.

0 голосов
/ 18 февраля 2010

Ну, тогда, я думаю, для вашего требования, это близко:

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

но все же DateTime это не распространяется, например. Возможно, вам придется добавить дополнительные типы, которые вы хотите исключить вручную.

0 голосов
/ 18 февраля 2010

используйте это:

 x.GetType().IsValueType();

Из справки:

Type :: IsValueType Свойство Получает значение, указывающее, является ли тип значением типа.Типы значений - это типы, которые представлены в виде последовательностей битов;Типы значений не являются классами или интерфейсами.Типы значений в некоторых языках программирования называются «структурами».Перечисления являются частным случаем типов значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...