Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/48: Рейтинг темы: голосов - 48, средняя оценка - 4.75
1011 / 115 / 2
Регистрация: 26.08.2011
Сообщений: 1,077
Записей в блоге: 2
1

Как быстро очистить коллекцию?

18.07.2015, 22:09. Показов 8858. Ответов 11
Метки нет (Все метки)

Для быстрой очистки массива есть команда
Visual Basic
1
Erase массив
Есть ли нечто подобное для коллекции?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2015, 22:09
Ответы с готовыми решениями:

Очистить коллекцию
Друзья, ХЕЛП!!! не могу очистить коллекцию, она все пополняется и пополняется, и как с коллекции...

Как очистить такую коллекцию?
List<List<string>> answers = new List<List<string>>(); и вот что странно - если я ее запоняю...

Как проще можно очистить коллекцию List в зависимости от предиката (без присваивания)?
Например есть List из объектов "Человек". Нужно очистить от всех объектов у которых возраст < 18....

Как быстро очистить все таблицы (справочники, журналы, регистры)
Как быстро очистить все таблицы (справочники, журналы, регистры)

11
1312 / 291 / 65
Регистрация: 13.11.2008
Сообщений: 604
18.07.2015, 22:29 2
Лучший ответ Сообщение было отмечено AndreA SN как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
Dim oc As New Collection
oc.Add "one", "1"
oc.Add "two", "2"
oc.Add "three", "3"
 
MsgBox oc.Count
'переназначение значения переменной стирает так же все значения
Set oc = New Collection
MsgBox oc.Count
2
15037 / 6364 / 1726
Регистрация: 24.09.2011
Сообщений: 9,976
18.07.2015, 22:30 3
Проще создать новую:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub test()
Dim myCol As Collection
  Set myCol = New Collection
  myCol.Add "one"
  myCol.Add "two"
  MsgBox myCol.Count '2
  
  Set myCol = New Collection 'создание новой коллекции, уничтожение прежней
  MsgBox myCol.Count '0
End Sub
2
Эксперт WindowsАвтор FAQ
17637 / 7480 / 886
Регистрация: 25.12.2011
Сообщений: 11,261
Записей в блоге: 16
22.07.2015, 13:54 4
Или просто уничтожение, если коллекция более не нужна

Visual Basic
1
set myCol = Nothing
3
1011 / 115 / 2
Регистрация: 26.08.2011
Сообщений: 1,077
Записей в блоге: 2
28.07.2015, 10:23  [ТС] 5
концепция несколько не ясна с точки зрения расхода памяти
Ребята. ну вы же меня понимаете с моими заморочками "про грамотность"
правильней будет сначала удалить коллекцию. а потом создать новую?
Visual Basic
1
2
set myCol = Nothing
Set myCol = New Collection
Или просто создавать новую и не париться с предварительным удалением?
0
Эксперт WindowsАвтор FAQ
17637 / 7480 / 886
Регистрация: 25.12.2011
Сообщений: 11,261
Записей в блоге: 16
28.07.2015, 10:44 6
При создании нового экземпляра, автоматически уменьшается кол-во ссылок на первый, если на нее указывает та же переменная. При кол-во ссылок = 0, экземпляр уничтожается.
1
1011 / 115 / 2
Регистрация: 26.08.2011
Сообщений: 1,077
Записей в блоге: 2
28.07.2015, 11:06  [ТС] 7
выходит, чтобы не париться с отслеживанием на момент "пересоздания коллекции" уже ненужных ссылок - стоит предварительно изничтожить коллекцию, а уж потом создавать новую?...
0
15037 / 6364 / 1726
Регистрация: 24.09.2011
Сообщений: 9,976
28.07.2015, 11:24 8
AndreA SN, без разницы. Dragokas имеет в виду вот что:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Dim a, b
Set a = New Collection  'a хранит ссылку на объект
Set b = a               'b хранит ссылку на тот же самый объект, проверка
a.Add "qwe"
Debug.Print b(1)
Set a = Nothing         'a не хранит ссылку, но объект существует, т.к.
                        'есть другая переменная, которая хранит ссылку на него:
Debug.Print b(1)
Set b = Nothing         'при назначении переменной b другого объекта или Nothing
'или                    'коллекция уничтожается
Set b = Application
2
5 / 5 / 1
Регистрация: 27.07.2015
Сообщений: 88
28.07.2015, 11:25 9
Цитата Сообщение от AndreA SN Посмотреть сообщение
чтожить коллекцию, а уж потом создавать новую?...
Вы читаете, что Вам пишут?
Цитата Сообщение от Dragokas Посмотреть сообщение
При создании нового экземпляра, автоматически уменьшается кол-во ссылок на первый, если на нее указывает та же переменная. При кол-во ссылок = 0, экземпляр уничтожается.
То есть не надо уничтожать старую коллекцию. Создайте новую без ссылок (кол-во ссылок = 0), и она автоматически удалит старую.
0
1011 / 115 / 2
Регистрация: 26.08.2011
Сообщений: 1,077
Записей в блоге: 2
28.07.2015, 12:39  [ТС] 10
был косяк по отправке сообщалки. Модераторам. пожалуйста удалите эту сообщалку

Добавлено через 52 минуты
Цитата Сообщение от Капитан Экселя Посмотреть сообщение
Вы читаете, что Вам пишут?
Всегда читаю, но не всегда понимаю)))
Поэтому задаю вопросы: далеко не всегда умные, но всегда для меня важные.
Так и учусь: слепо, в потемках, фрагментарно, но, как показывает опыт, последовательно.
За что благодарен. Всегда! Особенно терпеливым)))
И еще: автоматика - это далеко не всегда само собой понятное действие.
Мусор в куче тоже чистится автоматически, но когда это происходит - мне тоже совсем не прозрачно. Да по-моему и большинству на форуме тоже. Вот я и забочусь, чтобы от моей программули беспризорного мусора было поменьше. Тем более, что работаю с кошмарными по размерам объемами данных в оперативном режиме.
Капитан Экселя, понимаю Ваше возмущение и прошу внимательно отнестись к этому сообщению. Оно объясняет мою настырность и сверхтерпение таких людей, как Казанский, Dragokas по отношению к моим вопросам.
С уважением...
0
5 / 5 / 1
Регистрация: 27.07.2015
Сообщений: 88
28.07.2015, 12:47 11
AndreA SN,
Казанский в посте перед моим дал вам код.
0
1011 / 115 / 2
Регистрация: 26.08.2011
Сообщений: 1,077
Записей в блоге: 2
28.07.2015, 12:53  [ТС] 12
Цитата Сообщение от Капитан Экселя Посмотреть сообщение
То есть не надо уничтожать старую коллекцию. Создайте новую без ссылок (кол-во ссылок = 0), и она автоматически удалит старую.
вот это меня устроило тоже
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2015, 12:53

Помощь в написании контрольных, курсовых и дипломных работ здесь.

В какую коллекцию наиболее быстро добавляются объекты?
В какую коллекцию наиболее быстро добавляются объекты?

Дано число R и коллекцию размера N. Преобразовать коллекцию, заменив все ее положительные элементы на число R
Всем доброго времени суток. Вот такая задачка. Дано число R и коллекция размера N....

Как добавить коллекцию
Здравствуйте. У меня получилось все наоборот - начинал с java, потом C#- и там просто создавались...

Как реализовать коллекцию?
Здравствуйте. У меня был вот такой код: Создан массив автобуса: Bus bus = new Bus(max_seats,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.