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

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

27.03.2013, 19:12. Показов 1548. Ответов 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,552
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,552
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,552
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
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru