Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C# ArrayList (VS2008)

29K
29 марта 2011 года
Енот_в_Засаде
224 / / 09.11.2010
Доброго времени суток.

Имеется след. код:

Код:
public ArrayList pack = new ArrayList(); //к сожалению без этой глоб. переменной никак не оботись (много загона получиться)
 
 public void Func()
 {
....
       foreach (SetOfBox b in boxes)
                {
                        if (b.isPacked ==true)
                         {
                             pack.Add(b);

                         }
                }
.....
 }


и имеется функция, в которой я, чтобы не портить добавляющиеся по мере выполнения объекты, при вызове создаю новый список:

Код:
public bool isCross(SetOfBox[] R, SetOfBox box)
        {
            ArrayList ar = new ArrayList();
            ar = pack;
// здесь работаю уже с ar, и добавляю туда еще объекты
 foreach (SetOfBox s in R)
            {
                if (s.isPacked)
                {
                  ar.Add(s);
                }
            }
           
        }

так вот я не могу понять, в функции Func() в pack добавляются элементы (всё правильно), потом в isCross создаю "копию" этого списка (список ar), а когда в ar добавляю еще объекты, то и содержимое pack меняется (как бы уже pack становиться копией ar).

догадываюсь что объяснение простое:), но уже голова несоображает (всё таки 9 час отладки программы 8-)). объясните плиз:)
2.1K
29 марта 2011 года
Norgat
452 / / 12.08.2009
Цитата:
догадываюсь что объяснение простое, но уже голова несоображает (всё таки 9 час отладки программы 8-)). объясните плиз



 
Код:
ArrayList ar = new ArrayList();
            ar = pack;


Открой любую книжку по C# и прочитай, что всё, что не наследуется от ValueType храниться в куче, а переменная хранит указатель на этот объект в куче.

http://msdn.microsoft.com/ru-ru/library/system.collections.arraylist.aspx
Цитата:
ArrayList(ICollection)

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



нужно(не проверял, студии под рукой нету сейчас):

 
Код:
var ar = new ArrayList(pack);
29K
29 марта 2011 года
Енот_в_Засаде
224 / / 09.11.2010
спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог