Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
AS 3.0

Особенности использования ссылочных типов

27.03.2013, 19:12. Показов 1523. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток всем.Подскажите по поводу ссылочных типов ,я что то не могу понять.Есть кусок кода :
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private function removePointsWithOneGrade():void
        {
            for each (var i:Vector.<MPoint> in graph)
            {
                for each (var j:MPoint in i)
                {
                    if (j.grade == 1 && j != null)
                    {
                        var neighbor:MPoint = j.getNeighborAt(0);
                        neighbor.removeNeighbor(j);
                        j = null;
                    }
                }
            }
        }
Так вот,есть некий список типа "private var graph:Vector.<Vector.<MPoint>>".Тут я получаю ссылки на объекты этого списка,и в условии присваиваю элементу j = null. В списке graph это не отражается почему то,хотя ссылки одинаковые,т.е. в отладчике смотрел на указатель,он примерно так выглядит @4с639a1(какой то рандомный набор).Так вот тут у j = @4с639a1 и у graph есть такой объект с таким же указателем 4с639a1 . Почему это происходит?Неужели копия ссылки все таки каким то образом получается?

P.S. Сначала создал тему с названием "Ссылочные типы"(предыдущая),но после создания получилось так,что я в чужую тему добавил пост и там уже были сообщения. Потом пост изменил,и создал эту новую тему. Причем автором темы "Ссылочные типы" являюсь я,хотя первое сообщение не мое..

Добавлено через 2 часа 24 минуты
Ребят ну подскажите,как можно проблему решить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.03.2013, 19:12
Ответы с готовыми решениями:

Сравнение ссылочных типов
первый случай понятен , без явного приведения мы сравниваем одинаковое значения по разным ссылкам.(будет true) второй случай тоже...

Инкапсуляция ссылочных типов
Здравствуйте! Имеется такой класс (что-то вроде обёртки). public class ArrayWrapper { private int arr; //Constructor public...

Графическое представление ссылочных типов
Извините, случайно никому не попадались лекции или учебники, где ссылочные связи изображались бы графически? Вот как например на...

6
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
27.03.2013, 23:29
Цитата Сообщение от NowMatrix Посмотреть сообщение
присваиваю элементу j = null
Цитата Сообщение от NowMatrix Посмотреть сообщение
В списке graph это не отражается почему то
И не должно. "Зануляется" переменная j, созданная внутри метода removePointsWithOneGrade, а не содержимое указанного массива.
1
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
27.03.2013, 23:49  [ТС]
Ну по идее да,но j ссылается на объект массива,разве я не прав?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
27.03.2013, 23:51
NowMatrix, нет, это отдельная переменная, мы ей присвоить null, но на этот объект ссылается еще и переменная во вложенном массиве. А объект как был, так и остался. Он "умрет" тогда, когда про него все забудут (не будет ссылок на него) при условии обработки сборщиком мусора.
1
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
28.03.2013, 01:00  [ТС]
TanaTiX, подождите ,все равно что то туплю...В справочнике adobe сказано:

for each (variableIterant in object){
// statement(s)
}

Параметры
variableIterant:* — Имя переменной, выступающей в роли итеранта, ссылающейся на элемент коллекции.
object:Object — Имя коллекции, через которую выполняется итерация. Коллекцией может быть объект XML, типовой объект или массив.
По факту вы правы,так оно и есть,но то ли я не понимаю сути этого цикла.
Если написать так:
for (var i:int = 0; i < ... и т.д. - то мы создадим новую переменную и инициализируем её,т.е. выделим под неё память.
А в моем случае j должна ссылаться на элемент коллекции,без выделения памяти...Я понимаю,но не понимаю...
Просто допустим,если в объекте j изменить какое либо свойство,это отразится на коллекции graph в ее конкретном элементе.
Я в первом посте у элемента j меняю некий массив(смежные точки графа),на коллекции graph это отражается,как я уже говорил.

Добавлено через 8 минут
Или все таки j - это копия объекта со всеми его свойствами.Т.е. выделяется память,копируются туда все свойства,потом поле изменений j,все её поля обратно копируются в элемент массива.А если её "обнулить",обнулится ссылка на новый созданный объект и на массиве не отразится...так я рассуждаю?

Добавлено через 36 минут
TanaTiX, все ,я разобрался,вы правы,спасибо.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
28.03.2013, 01:01
Цитата Сообщение от NowMatrix Посмотреть сообщение
Я понимаю,но не понимаю...
А хорошо

Цитата Сообщение от NowMatrix Посмотреть сообщение
Или все таки j - это копия объекта со всеми его свойствами.
Нет. Если говорить о ссылочных объектах, то их стоит воспринимать "где-то там", не тут, где переменная, а все переменные - ссылки на них

На один объект могут ссылаться разные переменные (пример с массивом в т.ч.)
ActionScript 3
1
2
3
var o:Object = {};
var a:Object = o;
var b:Object = o;//переменные a и b ссылаются на объект o
На объект может не ссылаться никто
ActionScript 3
1
new Some();//переменная, по которой мы могли бы достучаться до объекта отсутствует
Переменная может ни на что не ссылаться
ActionScript 3
1
var variable:Some;//null
1
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
28.03.2013, 09:45  [ТС]
TanaTiX, да спасибо ещё раз,я уже понял.Просто с утра до ночи за компом сидел,голова кипит под конец....Так то вроде все это знал, а ступор какой то наступил... Ещё раз спасибо..)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.03.2013, 09:45
Помогаю со студенческими работами здесь

ArrayList для ссылочных типов
Здравствуйте. Правда ли, что при наполнении ArrayList ссылочными типами, то операции boxing/unboxing не выполнятся. Тем самым можно не...

Троелсен, Передача ссылочных типов по значению
class Person { } static void SendAPersonByValue(Person p) //получена копия ссылки на объект из вызывающего кода. { p = new...

Передача в методы переменных ссылочных типов
Есть класс: class Sample { int i; public Sample(int x) { i = x; } ...

Бинарное дерево с использованием ссылочных типов
Здравствуйте! Я продолжаю изучение Пролога в универе (работаю на прологе 7.5). Задали задание реализовать бинарное дерево с помощью...

Инициализация ссылочных типов в структурах\классах
Добрый вечер. Заинтересовал следующий вопрос. Как лучше инициализировать поля класса\структуры(для структуры вроде нельзя инициализировать...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru