powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему в .Net такие убогие коллекции?
25 сообщений из 379, страница 4 из 16
Почему в .Net такие убогие коллекции?
    #38680993
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129,

Prism для WPF действительно сложный. Для WinApp он как-то лучше выглядит. А так MVVM Light рулит
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681178
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanАлексей Кпропущено...
Вся модель содержимого (content model) строится на композиции. ContentControl, ItemsControl и т. д.
http://www.stauffware.com/d_and_d/dotNet/WPF_UIElement_inheritance.png
м?Не, там речь о визуальном наследовании с поддержкой дизайнера.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681185
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КНу почему же... В принципе заманчиво поместить в базовую форму ToolStrip с основными кнопками (добавить, изменить, удалить и т. п.) и DataGridView. В в унаследованной форме добавить кнопок в ToolStrip и задать колонки в DataGridView под конкретный источник данных. Но не судьба...

такие вещи лучше делаются не через дизайнера. тулстрипы могут быть отцепляемыми и переносимыми, скрываемыми пользователем, скрываемыми по условиям, вся эта пользовательская настройка должна сохраняться. все действия на кнопках адресуются менеджеру команд, т.е. вообще нет смысла задавать евенты на кнопки через дизайнера. иконки и текст на кнопках тоже через дизайнера нет смысла задавать, это лучше через слой интернационализации.. вообще нахрен этот дизайнер впился, так до сих пор и не пойму. чтобы какая-нибуд Люся, не окончившая ПТУ могла мышкой кнопку с панели инструментов притащить? бред в общем.В целом я согласен. Но тут беда в том, что в WinForms нет языка разметки для декларативного описания формы, а на C# это описывать несколько неудобно. В WPF с этим гораздо лучше, в нём работать без дизайнера достаточно удобно.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681205
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВ целом я согласен. Но тут беда в том, что в WinForms нет языка разметки для декларативного описания формы, а на C# это описывать несколько неудобно. В WPF с этим гораздо лучше, в нём работать без дизайнера достаточно удобно.

наверное, от части, поэтому WPF и был изобретён :) согласен.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681207
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Призм же сразу выходит с оговорками - он для "мегаапликаций".Эти оговорки меня просто убили. Я как-то уже их цитировал, повторюсь:
Проблема: монолитные приложенияЗатем, для соединения всего вместе, надо будет использовать маршрутизированные события (RoutedEvent), маршрутизированные команды (RoutedCommands) и привязку данных. Эта тема подробнее освещается в статье Брайана Нойеса (Brian Noyes) «Understanding Routed Events and Commands in WPF» («Понимание маршрутизированных событий и команд в WPF»), которая вошла в этот выпуск журнала (msdn.microsoft.com/magazine/cc785480). PositionGrid имеет связанную RoutedCommand для выполнения выбора. В обработчике этой команды Execute при каждом выборе позиции происходит событие TickerSymbolSelected. TrendLine и NewsReader привязаны к нему, они ждут события TickerSymbolSelected и визуализируют свое содержимое, основываясь на выбранном биржевом коде.

В данном случае приложение тесно привязано к каждому элементу управления. Для координации всех различных частей в интерфейсе пользователя имеется значительный объем логики . Также существует взаимозависимость между элементами управления.Для начала надо изучить возможности WPF, а потом делать выводы и, тем более, давать советы окружающим. Тогда не будет "значительного объёма логики" для интеграции различных частей между собой. И всё там будет нормально и с независимостью контролов друг от друга, и с параллельной разработкой и со всем остальным. Всё это решается описанием свойств зависимостей прикладного назначения и банальным биндингом различных частей UI между собой, описанных в виде CustomControl или UserControl, в зависимости от потребностей..

И как после этого можно верить авторам сего поделия, если "оговорки" тянут на премию "Шариков - сентябрь, 2008"?
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681343
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttICollection и ICollection<T> -- разные по смыслу и замыслу интерфейсы, это совсем не тоже самое «только с типом». это и касается IDictionary/IDictionary<T>.Неправда. Коллекция по своей сути - это "Add", "Count" и итератор. Не больше и не меньше. Все недженерик коллекции имеют в том или ином виде операции добавления. Так почему не вынести Add на интерфейс? И да, ICollection и ICollection<T> - это абсолютно одинаковые по замыслу интерфейсы. Но только первый реализован криво - какой сомнительной компетентности проектировщик не добавил туда Add. Идиотизм.

hVosttвсё логично, если подумать тем местом, что называется голова. я же сказал ICollection и ICollection<T> никак не коррелируют друг с другом, да и были спроектированы с довольно большим интервалом времени. кое что доосмыслилось при проектировании типизированных коллекций, а старое менять нельзя, надеюсь сам понимаешь почему. очень надеюсь.Неправда. Вы уже дважды сказали глупость, что они, дескать, не коррелируют. Ну тогда откройте эти парные интерфейсы в соседних вкладках, и переключаясь между ними, убедитесь, что IDictionary<> и IDictionary реализуют абсолютно одни и те же базовые методы (игнорируем ненужную шелуху вроде "IsSyncrionzied"). Аналогично и с ICollection<> и ICollection за тем исключением, что разработчики языка забыли добавить в ICollecton методы Add, Remove и Contains, создав тем самым бесполезного и уродливого монстра.
По поводу ConcurrentBag ваш аргумент так же не катит по аналогичной причине. Добавлять в него можно? Да. Удалять можно? Да. Count брать можно? Да. Так почему он не имплементирует ICollection<>? Потому что коллекции в .Net плохо спроектированы, другого объяснения нет.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681345
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvПотому что коллекции в .Net плохо спроектированы, другого объяснения нет.
Вы верно отметили, что нетипизированные варианты - древние

жить не мешает, на недостатки - глубоко насрать
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681481
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvКоллекция по своей сути - это "Add", "Count" и итератор. Не больше и не меньше. Все недженерик коллекции имеют в том или ином виде операции добавления. Так почему не вынести Add на интерфейс? И да, ICollection и ICollection<T> - это абсолютно одинаковые по замыслу интерфейсы. Но только первый реализован криво - какой сомнительной компетентности проектировщик не добавил туда Add. Идиотизм.IList и List<T> нет?
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681490
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КIList и List<T> нет?Каждый лист это коллекция. Не каждая коллекция это лист, ибо операция получения элемента по индексу зачастую не имеет смысла (напр., HashSet).
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681509
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv,

Зачем спорить? Сказали же, что нетипизированные коллекции чего-либо - это анахронизм... Может в Java и привычно писать ArrayList, в .Net предпочитают типизированные варианты.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681513
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvАлексей КIList и List<T> нет?Каждый лист это коллекция. Не каждая коллекция это лист, ибо операция получения элемента по индексу зачастую не имеет смысла (напр., HashSet).Ну и что?
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681521
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvНеправда. Вы уже дважды сказали глупость, что они, дескать, не коррелируют.

Не коррелируют, ещё раз говорю. Похожие интерфейсы даже буква в букву ничего не означает. Типизированные и нетипизированные коллекции по определению -- разные. С нетипизированными сегодня практически уже нет смысла работать. Вообще. Нужно хранить объекты неизвестного типа? ICollection<Object>, про старые интерфейсы можно забыть и выкинуть на помойку. Они оставлены для совместимости. Поэтому прекращайте сношать мозг в жёсткой форме.

cdtyjvПо поводу ConcurrentBag ваш аргумент так же не катит по аналогичной причине. Добавлять в него можно? Да. Удалять можно? Да. Count брать можно? Да. Так почему он не имплементирует ICollection<>? Потому что коллекции в .Net плохо спроектированы, другого объяснения нет.

Не должен ни в коем случае. Даже если методы вроде бы похожи. Здесь я полностью согласен с разработчиками.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681572
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv,
отчасти согласен с вашим недоумением..
по поводу ICollection и ICollection<T>
Где то на форуме один дядька (от туда) сказал.
Типа такого: ICollection ну не оправдал наших надежд, получился уродцем в имплементации дженериков, вместо него создали ICollection<T>, а это недоразумение приходится таскать за собой..
По поводу ConcurrentBag vs ICollection, тут все наверное сложнее, как бы выскажу личное мнение.
Все скорее завязано с могопоточностью, мы привыкли работая с ICollection садить блокировку снаружи,
там есть такой метод Contains, который вообще бесполезен в конкурентной коллекции.
Если учесть что совпадение не желательны
( мешок превращается в лист) мы производим не аттомарное добавление, проверяем есть ли? - если нет адд, так вот между
проверкой и Add какой нибудь негодяй может вставить уже такое значение из другого потока, исключение конечно не получим но мешок останется, или садим блокировку с наружи, что уже будет курьёзом.
Поэтому и не отнаследовали его от ICollection, что бы не будить лихо.
Было бы конечно это хорошо, если бы,ConcurrentDictionary наследует ICollection, хотя и в явном виде ((
Тут уже можно получить фокусы с с сообщениями об ошибках.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
             ConcurrentDictionary<int, int> ss = new ConcurrentDictionary<int, int>();
            ...............
                ..............
            ICollection<KeyValuePair<int, int>> s = (ICollection<KeyValuePair<int, int>>)ss;
            if (!s.Contains(new KeyValuePair<int, int>(1, 2)))
            {
                new Thread(() => ss.TryAdd(1, 1)).Start();
                Thread.Sleep(100);
                s.Add(new KeyValuePair<int, int>(1, 2));
            }


зы в System.Collections.Concurrent ничего сокрального нет, все они реализованы на связных списках, вся скрытая блокировка
через ядерные мониторы..
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681601
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

если уж разбираться, что в .NET действительно вызывает полнейшее недоумение, это архитектура исключений. а с коллекциями как раз проблем никаких нет.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681608
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttГде-то в степи,

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

а что с ней не так?
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681620
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНе коррелируют, ещё раз говорю. Похожие интерфейсы даже буква в букву ничего не означает. Типизированные и нетипизированные коллекции по определению -- разные. С нетипизированными сегодня практически уже нет смысла работать. Вообще. Нужно хранить объекты неизвестного типа? ICollection<Object>, про старые интерфейсы можно забыть и выкинуть на помойку. Они оставлены для совместимости. Поэтому прекращайте сношать мозг в жёсткой форме.Вы не отличаете интерфейсы от имплементаций. За сим предлагаю закончить.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681623
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawhVosttГде-то в степи,

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

а что с ней не так?

человечьей логике сия архитектура плохо соответствует, в общем Рихтер уже об этом всё высказал
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681624
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttkmawпропущено...


а что с ней не так?

человечьей логике сия архитектура плохо соответствует, в общем Рихтер уже об этом всё высказал

а где почитать?
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681628
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvВы не отличаете интерфейсы от имплементаций. За сим предлагаю закончить.

если сказать вам по существу нечего, то конечно надо закончить.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681659
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawа где почитать?

РихтерСпециалисты Microsoft хотели сделать тип System.Exception базовым для всех исключений, а два других типа, System.SystemException и System.ApplicationException , стали бы его непосредственными потомками. Кроме того, исключения вброшенные CLR, стали бы производными от типа SystemException , в то время как исключения, появившиеся в приложениях, должны были наследовать от ApplicationException . Это дало бы возможность написать блок catch , перехватывающий как все CLR-исключения, так и все исключения приложений.

Однако на практике это правило соблюдается не полностью; некоторые исключения являются прямыми потомками типа Exception , некоторые CLR-исключения наследуют от типа ApplicationException , а некоторые исключения приложений -- от типа SystemException . Из-за этой путаницы типы SystemException и ApplicationException не несут никакой особой смысловой нагрузки. В настоящее время Microsoft подумывает вообще убрать их из иерархии классов исключений, но это невозможно, так как приведёт к нарушению работы уже имеющихся приложений, в которых используются эти классы.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681673
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvhVosttНе коррелируют, ещё раз говорю. Похожие интерфейсы даже буква в букву ничего не означает. Типизированные и нетипизированные коллекции по определению -- разные. С нетипизированными сегодня практически уже нет смысла работать. Вообще. Нужно хранить объекты неизвестного типа? ICollection<Object>, про старые интерфейсы можно забыть и выкинуть на помойку. Они оставлены для совместимости. Поэтому прекращайте сношать мозг в жёсткой форме.Вы не отличаете интерфейсы от имплементаций. За сим предлагаю закончить.
запутался свеном в интерфейсах :) В чем ваша проблема?
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681729
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv Вы не отличаете интерфейсы от имплементаций. За сим предлагаю закончить.
Я хоть учился на токаря, но точно знаю, что в профильных вузах на первом или втором курсе изучают такие структуры данных, как очередь и стек. Какой нафик в них Add?

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

Далее, если бы ICollection имел Add и ICollection<T> наследовался от него, какой вызывать, Add(object) или Add(T)? В момент разработки ICollection знали, что будет ICollection<T>!

Далее, при разработке ICollection<T> посчитали, что о потокобезопасности надо заботиться в другом месте(видимо задумывались о ns Concurent), а вот ридонливость пригождается часто.

Так то вот!
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681763
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а может свином не знает IList<T>? всегда им пользуюсь)
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681773
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я думаю, что надо прекращать метать бисер.
это обыкновенный толстый троллинг, без малейшего желания в чём-то разобраться.
...
Рейтинг: 0 / 0
Почему в .Net такие убогие коллекции?
    #38681841
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, что будет, когда топикстартер узнает об Immutable collections в дотнете. А также о коллекциях из F#, которые можно заюзать и в C#/VB.NET. Да и про Power Collections стоит упомянуть.
...
Рейтинг: 0 / 0
25 сообщений из 379, страница 4 из 16
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему в .Net такие убогие коллекции?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]