|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
||||||
Добавить элемент в лист моделей Add to AddRange01.08.2019, 07:01. Показов 3575. Ответов 34
Хотя главнее даже убрать инициализацию модели из foreach. Мне сильно не нравится, что здесь каждый раз в цикле foreach объявляется экземпляр класса модели.
0
|
||||||
| 01.08.2019, 07:01 | |
|
Ответы с готовыми решениями:
34
метод Add и AddRange List.Add, когда добавляю новые элементы в list то весь лист заполняется этими элементами кнопка add (добавить форму) |
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,043
|
|
| 07.08.2019, 06:07 | |
|
Umatkot_Primtep, куча разбивается на три блока под разные "поколения" объектов: нулевое (Эдем), первое и второе. И есть ещё LOH - Large Object Heap. Объекты помещаются либо в Эдеме, либо в LOH (если больше 85000 байт).
Обслуживать Эдем сборщику проще всего. Объём памяти Эдема небольшой и чистится он всегда полностью: что не выжило удаляется, остальное собирает вещички и переезжает в первое поколение. Т.е. Эдем заточен под короткоживущие объекты (которых создаётся много). Вы можете почитать об этом у Рихтера или Гольдштейна. Да и на MSDN тоже эти вещи тайной не являются.
1
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|||||||||||
| 07.08.2019, 06:20 [ТС] | |||||||||||
0
|
|||||||||||
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,043
|
|
| 07.08.2019, 06:23 | |
|
streamc, где эта строка находится? В воздухе, что ли?
0
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|
| 07.08.2019, 06:25 [ТС] | |
|
Usaga,
Внутри scope foreach string MText = "" объявляется каждый раз; В том то и дело, что не в воздухе.
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,043
|
|
| 07.08.2019, 06:26 | |
|
streamc, это и есть "в воздухе". Вне этого цикла этой строки нет. А значит и нечего пихать в LINQ-выражение.
1
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|||
| 07.08.2019, 06:30 [ТС] | |||
|
Usaga,
Короче, верну, как было.
0
|
|||
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,043
|
|
| 07.08.2019, 06:32 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 23.11.2010
Сообщений: 136
|
|
| 07.08.2019, 06:39 [ТС] | |
|
Usaga,
Жадным был. Причем зря. Все-равно при выходе из цикла, эти модели уничтожатся. Я хотел один большой лист моделей с добавлением данных для модели этого листа создать, а не с добавлением модели. Никакой магии или отмены очевидного.
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,043
|
||
| 07.08.2019, 06:43 | ||
|
streamc, кто уничтожится? Вы модели в List<T> добавляете, который ссылки на них удерживает. Никто не уничтожится пока есть этот List.
Добавлено через 57 секунд Вы перестановкой мест слагаемых сумму не уменьшите никак. Только беспорядка наплодить можете и всё.
2
|
||
|
Модератор
|
||
| 07.08.2019, 10:09 | ||
Object.MemberwiseClone. "Один объект на массив", насколько знаю, нет такого метода. Но и оно того не стоит. C# всё таки для другого предназначен. И в тех исключительных случаях, когда копирование объектов может ускорить приложение, лучше сделать библиотеку на С++ и использовать её. Но когда это может дать выигрыш? Чисто теоретически я себе могу представить какую-то заковыристую реализацию, но на практике.... Ведь в любом случае - это будет не глубокая копия... А для полной копии нужно всё равно проходить по всем внутренним ссылкам и под каждую опять таки запрашивать требуемый участок памяти. Практическую целесообразность такого не могу себе представить.
0
|
||
|
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
|
|
| 07.08.2019, 10:34 | |
|
streamc, да, он прав, если хранить что-то памяти - то всё равно это придётся создавать оператором new, который как раз и выполняет всю сложную работу по размещению элементов в памяти и это не только в C# и .NET - вообще везде.
Единственно, если что-то оптимизировать, то нужно очень точно подбирать структуры данных для хранения Элд Хасп, полностью согласен - я только ради эксперимента это делал и то - не получилось. Задачей было - просто создать массив одним new Type [] и потом, получить доступ к его каждому элементу по ссылке в памяти IntPtr и скопировать структуру, которая была инициализирована в другом участке памяти - тоже по IntPtr. Потом, если бы получилось, я бы сделал три Benchmarka - 1й) на new, 2й) на этот способ и 3й на десериализацию(вероятно, некоторые методы десериализации как - то без new обходятся - как Вы думаете?).
0
|
|
|
Модератор
|
||
| 07.08.2019, 10:42 | ||
|
Они всегда работают через конструктор типа. Поэтому одно из условий типа для сериализации - иметь конструктор без параметров. Если "двоичная", то аналог Object.MemberwiseClone.
1
|
||
|
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
|
|
| 07.08.2019, 10:46 | |
|
Элд Хасп, зато с пользой провёл время - пока ковырял, напоролся ещё вот на что https://github.com/neuecc/ZeroFormatter
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,043
|
|
| 07.08.2019, 11:02 | |
|
Umatkot_Primtep, вы не забывайте, что "объект" представлен не только данными которые вы можете в его полях и свойствах найти, но и заголовком с SyncBlock'ом и Methods Table Pointer. Т.е. есть ещё и техническая информация дополнительная. Вы это тоже собирались через IntPtr руками создавать? А GC как бы вы научили работать с таким самодельным объектом?
0
|
|
|
Модератор
|
||
| 07.08.2019, 11:27 | ||
|
Предоставить дополнительные методы - это понимаю. Поэтому и распространён пакет Newtonsoft.Json. Но по скорости работы....ООООчень сомневаюсь в эффективности (на практике) ZeroFormatter.
0
|
||
| 07.08.2019, 11:27 | |
|
Как добавить модуль (add-on) в QT Creator? Как добавить новую запись в TdbGrid 7.0 (ValueItems.add) ? Как добавить файл в автозагрузку с помощью команды REG ADD? TTable - какие поля предлагает добавить Add Field и куда?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|