![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
mitz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 11.11.2008 Репутация: нет Всего: нет |
Как в методе, не делая его универсальным( без передачи параметров типов), узнать тип элементов ICollection, если коллекция пуста?
![]() |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
System.Object. Не?
![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
jsharp36 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 8.10.2011 Репутация: нет Всего: 1 |
Точнее ставьте вопрос.
Если вы совсем новичок в дотнете и спрашиваете о неженерик интерфейсе ICollection, то ответ такой. В дотнете с переменной связано два типа. Это формальный с т.з. кода и "реальный" тип куска памяти. В других языках-компиляторах тип один - формальный. Т.е. в С++ например, переменная является всего лишь адресом в памяти, размером, а также договоренностью на уровне кода и компилятора, как этот кусок обрабатывать. В дотнете, даже если потеряете настоящий тип переменной, он всегда остается закрепленным за куском памяти и он не даст работать с этим куском памяти иначе, чем позволяет "реальный" тип. Формально ICollection хранит только System.Object. Это значит, что реальные типы он может хранить любые, причем одновременно разные. Какой реальный тип, можно узнать через отражение. Это надо спрашивать у каждого элемента отдельно. Пока коллекция пустая, то не у кого и спрашивать. Если же вы спрашиваете об женерик-интерфейсе ICollection<T> - то тоже спрашивать нечего. Всегда будет тип-параметр. Имел бы смысл ваш вопрос, если бы в метод передавалась эта коллекция, приведенная к базовой. Но ICollection<T> не имеет предка ICollection. Обжект или IEnumerable я думаю, рассматривать не стоит. Но если вы это имели ввиду, то загляните через отражение. Метод GetType(). И найдете какой это женерик и какие параметры-типы. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |