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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Архитектура System.Collections, и наследование интерфейсов 
:(
    Опции темы
0000
Дата 6.11.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

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



Цитата(tol05 @ 6.11.2007,  12:42)
Поскольку любая коллекция содержит в себе массив, то для скорости было бы логичнее, чтобы каждая коллекция предоставляла открытое свойство типа Array. Но это огромная дыра в защите кода. Дырище просто... Поэтому IEnumerable используется для защищенности коллекции а не для скорости.

а почему не может быть и для того, и для другого?
к тому же если бы речь шла только о защищенности легче было бы не делать foreach вовсе и оставить лишь оператор for для индексации


мож Гейтсу письмо написать - "Билл, зачем???"

Это сообщение отредактировал(а) 0000 - 6.11.2007, 13:03
PM MAIL ICQ   Вверх
tol05
Дата 6.11.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

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



Цитата(0000 @  6.11.2007,  12:02 Найти цитируемый пост)
если бы речь шла только о защищенности легче было бы не делать foreach вовсе и оставить лишь оператор for для индексации

если код не подвергается риску, то так и делается. Используется for (внутри методов класса, для локальных или закрытых коллекций). Даже больше скажу: for не потерял актуальности, даже наоборот... Раньше в for можно было только через Array.Lenght работать, теперь  (для коллекций) специально введено свойтсво Count.
Зачем оно, если нужно работать только через foreach ?

Если же коллекция предоставляется наружу, то нужно максимально защитить и ее содержимое и содержимое всего объекта, содержащего коллекцию. ReadOnly не спасает. Get Property - не спасает. IEnumerator - спасает.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
0000
Дата 6.11.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

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



фактически получается, что IEnumerator повяился для того, чтобы можно было пользоваться оператором foreach..
но тут суть-то в том, что IList явно наследует IEnumerator..если бы дело было только в надежности достаточно было бы того, что ICollection уже наследует IEnumerator и в IList лишний раз прописывать это наследование было бы не нужно
PM MAIL ICQ   Вверх
stab
Дата 6.11.2007, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

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



Цитата(tol05 @  6.11.2007,  16:42 Найти цитируемый пост)
ни MVP с "русско-неговорящих" сайтов - никто ничего не говорит


если не секрет, что за сайты? интересно было бы почитать дискуссию.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Jlekc
Дата 6.11.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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





--------------------
PM MAIL ICQ   Вверх
0000
Дата 6.11.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

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



то есть получается для более быстрой компиляции?
PM MAIL ICQ   Вверх
Jlekc
Дата 6.11.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



мож попробывать, а ваще загадка М$


--------------------
PM MAIL ICQ   Вверх
0000
Дата 6.11.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

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



но все равно непонятно..ну даже если получаем мы список интерфейсов, но ведь для полного списка нам все равно нужно проверить ICollection, чтобы взять его интерфейсы..мож там еще и другие есть


PM MAIL ICQ   Вверх
stab
Дата 6.11.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

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



Jlekc, понятно, похоже вопрос снят, это просто путаница при анализе метаданных. В аттаче один и тот же код, просматриваемый как проект и как внешняя сборка.

Код

public interface I1
{
}

public interface I2: I1
{
}

public interface I3: I2
{
}

public interface I4: I1, I2
{
}




Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  ifaces.png 4,71 Kb


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
0000
Дата 6.11.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

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



имхо это лишь ответ на то, что происходит, но не на вопрос - ПОЧЕМУ ТАК?
PM MAIL ICQ   Вверх
tol05
Дата 6.11.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

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



Цитата(stab @  6.11.2007,  14:37 Найти цитируемый пост)
если не секрет, что за сайты? интересно было бы почитать дискуссию.

да нет, не скерет. самая известная публикация после ECMA334 smile
или поиск по гуглу с ключом "re-implementation interface"
Только в том-то и дело, что не пишут... С классами - всем все давно понятно. Interface Mapping работает...

Jlekc, почитал... "для пущей понятности" и "для повышения быстродействия - уменьшения рефлексии" и т.п. ... как-то неубедительно. Если б я не знал как часто используется рефлекссия (практически везде) ... может быть и поверил бы. Но тогда с .Net на плюсы обратно переходить надо, если уж ТАК о быстродействии заботятся...

По поводу аттача - MSIL отличается, это в той ссылке, что я кидаю. упоминается.



--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Jlekc
Дата 6.11.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(tol05 @  6.11.2007,  16:56 Найти цитируемый пост)
Jlekc, почитал... "для пущей понятности" и "для повышения быстродействия - уменьшения рефлексии" и т.п. ... как-то неубедительно.

Да тоже не убидили, но другое напровление обсуждения. Решил последить за развитием, и тут запостил если кому интересно


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


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

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



0000, потому что вся иерархия интерфейсов всегда приводится, грубо говоря, к плоскому списку адресов методов для каждого типа реализующего интерфейсы, как и все наследуемые виртуальные методы. но когда сборка просматривается как проект, видимо используются не только метаданные, но и информация полученная при анализе исходного кода проекта, которая не отражает реальное положение вещей в метаданных.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
0000
Дата 6.11.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

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



но ведь насколько я понимаю, метаданные должны представлять наиболее полное описание сборки.. какое-то несоответствие получается того, что относится к метаданным и того, как представляется в проекте...
PM MAIL ICQ   Вверх
stab
Дата 6.11.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

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



Цитата(tol05 @  6.11.2007,  20:56 Найти цитируемый пост)
да нет, не скерет. самая известная публикация после ECMA334


это явный баг в jit-компиляторе, т.к. il-код валидный в обоих случаях, там вроде пишут, что уже поправили. вопрос в том, зачем это было делать таким запутанным, что даже стандарт ответа не может дать однозначного. здравствуй дядя Вирт со своим Обероном smile

Добавлено @ 17:27
0000, чёрт его знает, если задуматься, то из метаданных эту информацию можно вытянуть, например в рефлекторе всё нормально показывается. но, насколько я понимаю, это не будет однозначным ответом.

может быть это просто недочёт стандартного просмоторщика объектов студии.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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