![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| iddqd |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 16.11.2005 Репутация: 2 Всего: 2 |
Пытаюсь использовать вот так:
В последней строке у bb не изменилось значение. Как сделать нормальное приведение типа, чтоб все поля переносились? Или может быть предложите другую реализацию класса? -------------------- |
||||
|
|||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Несмотря на то, что, казалось бы, ты сохраняешь в ArrayList объект, на самом деле ты сохраняешь ссылку на объект. Поэтому нецелесообразно сохранять одну и ту же ссылку несколько раз (это так, к слову).
Меняя значение ClientId, ты меняешь его в объекте bb. А все хранимые тобой в ArrayList ссылки ссылаются на этот объект. Т. е. потом, при извлечении этих "объектов" (фактически, ссылок на bb) они будут ссылать на "обновленный" bb, соответственно предыдущее значение будет безвозвратно потеряно. Для того чтобы избавиться от ошибки можно, например, создавать новый объект:
В этом случае мы храним две ссылки на разные объекты, и изменение ClientId в одном объекте не повелечет изменения ClientId в другом (и наоборот). |
|||
|
||||
| Wanderer2019 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 937 Регистрация: 3.12.2004 Где: Санкт-Петербург/П рага Репутация: 7 Всего: 17 |
Честно говоря мало что понял из написанного...
Вообще то код компилится без ошибок, но вот логики нет совсем... Сначала ты создаешь объект bb... Далее ты инициализируешь поле ClientID. Затем создаешь объект типа GTClient (кстати поля класса положено инициализировать в конструкторах). Далее 3 раза добавляешь в список ссылку на 1-н и тот же обхект... Затем изменяешь значение поля этого объекта (соответственно это значение меняется и у уже "добавленных обхекто"). В конце концов ты кладешь в bb его же самого и добавляешь еще 1 раз.... Что ты пытался сделать???? |
|||
|
||||
| Stepan_Lameroff |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 16.12.2006 Репутация: 9 Всего: 14 |
Если пишете на FW2.0, то можно сделать типа такого:
|
|||
|
||||
| iddqd |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 16.11.2005 Репутация: 2 Всего: 2 |
А вроде всё понятно расписал.
Суть в следующем, мне надо сделать индексатор для класса GTClient, который будет возвращать объект, типа мой класс ClientInfo. -------------------- |
|||
|
||||
| bend0r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.9.2005 Репутация: 1 Всего: 2 |
хмм.а явное преобразования не подходит? кпримеру
|
|||
|
||||
| iddqd |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 16.11.2005 Репутация: 2 Всего: 2 |
Подходит. Проблемы с ссылочностью появляются. Нельзя просто как-то иначе реализовать класс и индексатор?
-------------------- |
|||
|
||||
| Stepan_Lameroff |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 16.12.2006 Репутация: 9 Всего: 14 |
Если Вас не устраивает Generic реализация(причины могут быть разные
|
|||
|
||||
| iddqd |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 16.11.2005 Репутация: 2 Всего: 2 |
Stepan_Lameroff, гениально!
+1 -------------------- |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |