Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать тип элементов ICollection? 
:(
    Опции темы
mitz
  Дата 6.3.2013, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 11.11.2008

Репутация: нет
Всего: нет



Как в  методе, не делая его универсальным( без передачи параметров типов), узнать тип элементов  ICollection, если коллекция пуста? smile 

PM MAIL   Вверх
diadiavova
Дата 6.3.2013, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



System.Object. Не? smile


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
jsharp36
Дата 7.3.2013, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.10.2011

Репутация: нет
Всего: 1



Точнее ставьте вопрос.

Если вы совсем новичок в дотнете и спрашиваете о неженерик интерфейсе ICollection, то ответ такой. В дотнете с переменной связано два типа. Это формальный с т.з. кода и "реальный" тип куска памяти. В других языках-компиляторах тип один - формальный. Т.е. в С++ например, переменная является всего лишь адресом в памяти, размером, а также договоренностью на уровне кода и компилятора, как этот кусок обрабатывать. В дотнете, даже если потеряете настоящий тип переменной, он всегда остается закрепленным за куском памяти и он не даст работать с этим куском памяти иначе, чем позволяет "реальный" тип.
Формально ICollection хранит только System.Object. Это значит, что реальные типы он может хранить любые, причем одновременно разные. Какой реальный тип, можно узнать через отражение. Это надо спрашивать у каждого элемента отдельно. Пока коллекция пустая, то не у кого и спрашивать.

Если же вы спрашиваете об женерик-интерфейсе ICollection<T> - то тоже спрашивать нечего. Всегда будет тип-параметр. Имел бы смысл ваш вопрос, если бы в метод передавалась эта коллекция, приведенная к базовой. Но ICollection<T> не имеет предка ICollection. Обжект или IEnumerable я думаю, рассматривать не стоит. Но если вы это имели ввиду, то загляните через отражение. Метод GetType(). И найдете какой это женерик и какие параметры-типы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0682 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.