Цитата:
Сообщение от
AndyD
при присвоении переменный, имеющих один базовый тип никаких приведений не требуется (upd. единственно, для строк действует ограничение на длину - лишнее отбрасывается).
В свете перехода на CLR
и от этого "обрезания" собираются отказаться.
Цитата:
Сообщение от
Sergey Petrov
Всем огромное спасибо. Подтвердили мои сомнения - архитектура передачи по значению не позволяет определять EDT передаваемых данных.
Более того, передаваться исходно могут вообще данные не того типа, какой вы ожидаете. Например:
X++:
void foo(InventQty _qty)
{
// ...
}
void bar()
{
this.foo( 0 ); // здесь передается аргумент типа int, а не real! какие уж там тонкие отличия EDT...
}
При этом приведением типов Аксапта занимается лишь в момент, когда необходимо "вычислить" значение какого-либо выражения с использованием переданного аргумента. Это обсуждалось в теме
axaptapedia: Trap typecast.
По-моему, если нужно передавать не просто значение параметра, но и некую дополнительную семантику, связанную с этим значением, то проще и надежнее это реализовать за счет дополнительного параметра-enum'а.