![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Только два варианта:
1. Массив ArrayList - массив object'ов (не типизированный массив) - приходится постоянно типизировать... 2. List<type> - типизированный список с возможностью индексации, НО: нельзя изменять объекты через индексы (можно только читать)... (list[2] := 4 - error) |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Во-первых, есть просто Type[], во-вторых
Прекрасно можно. Единственно, могу предположить, что у тебя List<T> a, где T — value-тип (структура), а ты пытаешься изменить в нём поле: a[i].member = x. Вот это действительно невозможно. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Очередной сюрприз Microsoft... Что у неё там за аномальные проблемы с полями ?!.. |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Никаких сюрпризов, надо просто понимать семантику value-типов. Оператор [] возвращает копию содержимого, в этом вся проблема. Обойти это можно, заменяя объект целиком:
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Так нужно не копию возвращать, а по смещению поля доступ предоставлять к типизированной области памяти, как в C/С++... А к семантике value-типов, как по мне, ситуация прямого отношения не имеет... Добавлено через 6 минут и 2 секунды Проблема здесь в реализации индексатора через механизм set/get... Это сообщение отредактировал(а) CyraxZ - 10.4.2007, 23:20 |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
||||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Должно быть так:
индексатор list[i] - возвращает i-ю переменную (value-структуру) по ссылке (в C-ном понимании), т.е. ссылку на типизированную область памяти, где физически расположена i-я структура, и предоставить нам право самим решать, что мы будем делать с этой областью памяти, а не вызывать методы get или set в зависимости от операции, которую мы выполняем с элементом массива/списка - присваиваем (выполняется метод set) или получаем доступ к полю структуры (выполняется метод get, после чего мы уже не можем присвоить полю структуры другое значение, поскольку у нас имеется копия)... |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
прощай, managed heap... -------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |