Цитата:
Сообщение от
Eldar9x
но если написать метод так:
X++:
public TmpTable parmTmpTable(TmpTable _tmpTable = tmpTable)
{
if (!prmisdefault(_tmpTable))
tmpTable.setTmpData(_tmpTable);
return tmpTable;
}
то в этом случае временная таблица с клиента будет передана в класс сразу скопом, и при дальнейшей пробежке по tmpTable клиент затрагиваться не будет?
Метод setTmpData не копирует буфер таблицы, а всего лишь создает второй указатель на этот буфер. Т.е. буфер в данном случае все равно останется на клиенте.
Копирование указателя через простое присваивание не является копированием в общем случае. Это просто передача указателя.
В качестве проверки моих слов - попробуйте создать второй указатель через setTmpData, а затем измените в первом указателе какую-нибудь запись, после чего выберите ее во втором указателе. Увидите - что она тоже изменилась.