C #: Как проверить типы двух экземпляров - PullRequest
1 голос
/ 04 ноября 2010

У меня проблемы с получением правильного синтаксиса для этого.

Скажем, у меня есть два экземпляра объекта, obj1 и obj2.

Теперь я хочу проверить две вещи:

1) Является ли тип obj1 подклассом типа obj2.

2) Является ли тип obj1 таким же , что и типobj2.

Я почти уверен, что смогу достичь 1), просто выполнив

obj1.GetType().IsSubclassOf(obj2.GetType())

Но вернет ли приведенное выше значение true, если obj1 и obj2 относятся к одному типу?

Ответы [ 3 ]

4 голосов
/ 04 ноября 2010

MSDN сообщает, что вернет false, если obj1 и obj2 одного класса http://msdn.microsoft.com/en-us/library/system.type.issubclassof.aspx

Вы можете просто сделать

obj1.GetType().IsSubclassOf(obj2.GetType()) || obj1.GetType() == (obj2.GetType()
3 голосов
/ 04 ноября 2010

В случае сомнений обратитесь к документации (выделено мной):

Возвращаемое значение : true, если Type, представленный параметром c, и текущий Type представляют классы, а класс, представленный текущим Type, происходит от класса представлен c; в противном случае false.

Этот метод также возвращает false, если c и текущий Type представляют тот же класс.

Если вы хотите проверить, совпадают ли два типа, вы можете просто сравнить их Type s:

obj1.GetType() == obj2.GetType()
0 голосов
/ 11 мая 2015
obj2.GetType().IsAssignableFrom(obj1.GetType())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...