2009-06-01 5 views
2

Предполагая, что у меня есть суперкласс A и подклассы A1 и A2, которые наследуются от A, как я могу получить тип подкласса переменных в коде ниже?Поиск типа подкласса экземпляра, объявленного как суперкласс

A _a1 = new A1(); 
A _a2 = new A2(); 
// Need type of A1 and A2 given the variables _a1 and _a2. 

Кроме того, если бы я был еще один подкласс A2_1 который является sublcass А2, как я получаю самый низкий тип подкласса данный ниже код?

A _a2_1 = new A2_1(); 

EDIT: Спасибо за ответы. Что за буо. Задумавшись над проблемой и даже не попробовав GetType(). =/

ответ

5

Console.WriteLine(_a1.GetType());

GetType может вернуть тип времени выполнения переменной, независимо от типа декларации.

1

Для первого - просто используйте _a1.GetType() и _a2.GetType(). На втором - что вы подразумеваете под «наименьшим типом подкласса»; или: какой ответ вы ожидать ... (которые могли бы помочь нам понять, что вы имеете в виду ...)

2

Вы можете использовать метод GetType():

Type type = _a1.GetType(); 
Type subtype = _a2_1.GetType(); 
1

GetType() на любом объект всегда дает вам реальный тип объекта, а не тип суперкласса. Если вы создаете экземпляры подклассов с использованием «new subclass()», то «подкласс» является типом объекта.

Вызов GetType() - это все, что вам нужно для ваших ситуаций.

Смежные вопросы