9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248
|
||||||
1 | ||||||
Обобщенный интерфейс ковариантность26.11.2014, 22:22. Показов 1812. Ответов 5
Метки нет (Все метки)
Господа, подскажите пожалуйста по коду. Вот ради эксперимента набросал код, но не пойму, почему метод GetNameObj возвращает объект типа a1 если ему как через конструктор, так и через параметр типа передают a2.
Вот код
0
|
26.11.2014, 22:22 | |
Ответы с готовыми решениями:
5
Обобщенный интерфейс Ограничения на обобщённый интерфейс Как объяснить компилятору, что коллекция может работать с объектами реализующими обобщенный интерфейс IComparable<T> Почему некоторые типы реализуют сразу и обобщенный вариант интерфейса и не обобщенный? |
6 / 6 / 4
Регистрация: 23.11.2014
Сообщений: 23
|
||||||
26.11.2014, 22:29 | 2 | |||||
упс
0
|
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
|
||||||
26.11.2014, 22:41 | 3 | |||||
Сообщение было отмечено bazyzy как решение
Решение
Потому что в коде вы проверяете имя типа параметра, а не объекта, на который ссылается переменная этого типа. Вариантность тут вообще не при делах.
Чтобы не путаться с обобщениями, примерно вот так выглядит ваш класс с точки зрения рантайма:
Если хотите получить конкретный тип объекта, то вместо typeof(T) используйте t.GetType()
1
|
6 / 6 / 4
Регистрация: 23.11.2014
Сообщений: 23
|
|
26.11.2014, 22:58 | 4 |
Кажется дело в версии платформы под 4 и выше все работает и typeof и gettype всмысле структура обобщений, а вот ниже помогает только ручное преобразование
0
|
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
|
|
26.11.2014, 23:07 | 5 |
Вы, наверное, что-то путаете. typeof и GetType — это не совсем одно и то же. typeof работает на типе, а GetType — на объекте. typeof(T), где Т — тип параметра, всегда вернет имя типа, с которым создан класс, в любой версии фреймворка, начиная с 2.0.
1
|
6 / 6 / 4
Регистрация: 23.11.2014
Сообщений: 23
|
|
26.11.2014, 23:09 | 6 |
ну я это и имел ввиду и t и T
Добавлено через 1 минуту на 5 все норм в любом случае а2 дает а на 3.5 typeof дает а1 а GetType вообще краш вызвал))))
0
|
26.11.2014, 23:09 | |
26.11.2014, 23:09 | |
Помогаю со студенческими работами здесь
6
Обобщенный и не обобщенный класс с одинаковым именем ковариантность Ковариантность и контрвариантность Ковариантность и контрвариантность Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |