2010-11-04 3 views
1

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

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

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

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

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

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

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

Но будет выше возвращение верно, если obj1 и obj2 одного и того же типа?

ответ

3

Если вы сомневаетесь, проконсультируйтесь с the documentation (курсив мой):

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

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

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

obj1.GetType() == obj2.GetType() 
+0

Doh! Должно было это посмотреть. Даже если бы я это сделал, у меня был бы еще вопрос о тестировании типа равенства, на который вы уже ответили мне в этом ответе. Благодаря! – Ben

0
obj2.GetType().IsAssignableFrom(obj1.GetType()) 
Смежные вопросы