AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.08.2003, 17:19   #1  
parovoz is offline
parovoz
Участник
 
18 / 12 (1) ++
Регистрация: 28.08.2003
? Что передается функциям, ссылки или значения?
Подскажите пожалста, когда в функцию передается значение, а когда ссылка на него. В плохой документации ничего про это не нашел, а хорошей не имеем. Знающие люди сказали, что ссылок в аксапте нет вообще.
Однако, если в функцию (типа void) передается класс, а в теле этой функции меняется переменная этого класса, то после завершения функции получаем измененный объект. Так же все работает при операции присваивания.

предположительно, объекты классов и таблиц - передаются (и присваиваются) по ссылке, а вот переменные основных типов - по значению.

А вот и пример:
X++:
//Тестовый класс
class TestClass
{
    int a;
}

int fa(int _a = a)
{
    a = _a;
    return a;
}

static void incA(TestClass _nts)
{
    _nts.fa(_nts.fa()+1);
}

//Метод любого другого класса, ходим тут дебагером и смотрим.
void run()
{
    TestClass NTK1, NTK2;
    ;
    NTK1 = new TestClass();
    
    NTK1.fa(5);
    TestClass::incA(NTK1);
    //Тут NTK1 уже равен 6...

    NTK2 = NTK1;
    //Тут они оба равны 6.
    TestClass::incA(NTK2);
    //А тут равны 7. Оба!!!
   ;
}
Старый 28.08.2003, 17:51   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Re: Что передается функциям, ссылки или значения?
Цитата:
предположительно, объекты классов и таблиц - передаются (и присваиваются) по ссылке, а вот переменные основных типов - по значению
Правильно.
Старый 28.08.2003, 18:15   #3  
parovoz is offline
parovoz
Участник
 
18 / 12 (1) ++
Регистрация: 28.08.2003
Спасибо.
Тоскливо оттого, что это не общеизвестный факт...
Старый 28.08.2003, 19:59   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Почему "не общеизвестный"?
http://www.yoda.arachsys.com/java/passing.html

или сделайте самостоятельный поиск
http://www.google.com.ru/search?hl=r...ence+value&lr=
Старый 28.08.2003, 20:04   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Сделаю цитату
Цитата:
Myth: "Objects are passed by reference, primitives are passed by value"
Truth #1: Everything in Java is passed by value. Objects, however, are never passed at all.
Truth #2: The values of variables are always primitives or references, never objects.
Да, и перевод. На всякий случай. Вольный.
Цитата:
Часто некоторые на форумах повторяют миф:
Миф: Объекты передаются по ссылке, а примитивы по значению.
...
Истина же...:
Истина 1: Всё в Java передается по значению. Объекты, же, вообще никогда не передаются
Истина 2: Значениями переменных могут быть только примитивы или ссылки, но не объекты.
Читайте мануалы, они рулез.
Теги
передача параметров, ссылочная переменная

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
где хранятся значения полей удаленных строк? chanchala DAX: Программирование 16 04.09.2008 10:45
Как получить значения полей (modifiedDate, modifiedTime, modifiedBy и др.) при работе с объектами AOT типа Map? LRA DAX: База знаний и проекты 15 02.04.2007 13:37
Производство: Почему теряются ссылки дочерних производств при приемке родительского? e@gle DAX: Функционал 0 01.03.2007 13:23
Значения возвращаемые sysNodeType() Lemming DAX: Программирование 2 16.12.2004 15:24
Недопустимая комбинация поля/поля ссылки Berty Wooster DAX: Программирование 2 29.05.2003 16:31

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:05.