powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# New item to list box
7 сообщений из 7, страница 1 из 1
c# New item to list box
    #39683306
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Залез в один код, и вижу

Код: c#
1.
item = new List<Item> (); 



В него идёт добавление

Код: c#
1.
item.Add (new Item()); 



А потом, делается

Код: c#
1.
item[Idx] = ItemBox;



Старый создано - добавленный item теряется ведь? И ведёт это к утечке памяти.

Или он потом удаляется, при выходе из метода? Или всё же счётчик ссылок не уменьшается,и он не удаляется
...
Рейтинг: 0 / 0
c# New item to list box
    #39683332
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если заменяемый Item не держит ссылок на какие-либо другие объекты (в т.ч. через event handler'ы), и никакие другие объекты не держат ссылок на заменяемый Item, то этот Item будет уничтожен при очередной сборке мусора.
...
Рейтинг: 0 / 0
c# New item to list box
    #39683339
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как сборщик мусора поймёт, что при присвоение нового item
Код: c#
1.
item[Idx] = ItemBox;



Созданный ранее "new Item()"
Код: c#
1.
item.Add (new Item()); 




Больше нигде не используется ? Ведь мы в наглую переприсвоили элемент - List'a
...
Рейтинг: 0 / 0
c# New item to list box
    #39683340
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так ссылка на старый объект пропадет.
List - это просто оболочка над массивом. В данном случае - массивом ссылок. Перезаписали ссылку в элементе - всё, нет старой ссылки
...
Рейтинг: 0 / 0
c# New item to list box
    #39683341
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто думал по логике, что счётчик ссылок хранится в самом - созданном объекте. И если молча, задать массиву - новый элемент, то счётчик ссылок, у созданного "new Item()"

Код: c#
1.
item.Add (new Item()); 




Не уйдёт в DEC и при сборщике муссора, он будет думать что всё ещё этот "new Item()" используется. Хотя элемент уже где - то плавает...


Но если я не прав, и он всё таки как - то удаляет, ранее созданный "new Item()" после внезапного присвоения нового - существующего элемента на старое место. То это хорошо
...
Рейтинг: 0 / 0
c# New item to list box
    #39683343
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГирлионайльдоЯ просто думал по логике, что счётчик ссылок хранится в самом - созданном объекте. И если молча, задать массиву - новый элемент, то счётчик ссылок, у созданного "new Item()"
Нет никакого счетчика ссылок - это же не COM. В .Net факт того, что содержимое объекта в куче при сборке мусора можно удалить, определяется на этапе marking этой самой сборки мусора. Почитайте Рихтера, у него подробно описано, как это делается.
...
Рейтинг: 0 / 0
c# New item to list box
    #39683345
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГирлионайльдоЯ просто думал по логике, что счётчик ссылок хранится в самом - созданном объекте.Не стоит тащить в .NET логику из каких-то других языков.
По GC полно материала, и вкратце, и подробного, почитайте на досуге
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# New item to list box
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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