Box/Unboxing
От: Vertigo_  
Дата: 02.09.06 13:45
Оценка:
            for (int i = 0; i < _items.Count; i++)
            {
                Client cl = (Client)_items[i];
                cl.credit += 100;
            }

Есть вот такое вот дело. Если оно так работает то cl.credit не изменяется (+100 не прибавляется), а если добавить
_items[i] = cl;

то все работает. Почему? Вроде ж должно и без _items[i] = сl; работать?
Re: Box/Unboxing
От: binarycode Россия  
Дата: 02.09.06 15:14
Оценка:
V_>Есть вот такое вот дело. Если оно так работает то cl.credit не изменяется (+100 не прибавляется), а если добавить
V_>
V_>_items[i] = cl;
V_>

V_>то все работает. Почему? Вроде ж должно и без _items[i] = сl; работать?

Всё верно потому, что:
По науке: unboxing это получание адреса boxed обьекта, то есть привидение, но C# не может непосредственно получить адрес, поэтому для него unboxing — это комбинация првидения + копирования т.е. ты изменяешь стековую копию обьекта (Client)_items[i], и эти два значения никак не коррелируют между собой.

Заюзав _items[i] = сl думаю, уже понятно почему работает
Начинающий программист
Re: Box/Unboxing
От: Lloyd Россия  
Дата: 03.09.06 16:51
Оценка: +1
Здравствуйте, Vertigo_, Вы писали:

V_>то все работает. Почему? Вроде ж должно и без _items[i] = сl; работать?


Не объявляй Client как структуру, и все будет работать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Box/Unboxing
От: Аноним  
Дата: 04.09.06 00:27
Оценка: -2
((Client)_items).credit += 100;

так должно работать

[i]данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Box/Unboxing
От: Kasko_Dm Украина  
Дата: 04.09.06 14:05
Оценка:
Здравствуйте, Nimnul, Вы писали:

N>((Client)_items[i]).credit += 100;


N>так должно работать


Так работать не будет ! Измениться лишь временной обьект ! Тут действительно лучше всего юзать класс вместо структуры !
Чотбы избежать лишних операций упаковки распакови и лишних строк кода !
Windows Must Die :)
Re: Box/Unboxing
От: Аноним  
Дата: 04.09.06 23:48
Оценка:
какоето жжение, ну тогда надо юзать указатели работать будет 100%
Любое удобство идет за счет мегагерцеф!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.