表变量作为返回值

本文探讨了X++中表变量与类的区别,重点分析了表变量字段为public类型的特点,以及通过方法返回表变量时遇到的问题。文章还提供了解决方案,展示了如何正确地操作表变量。

表变量和类最大的区别是表变量中的字段是public类型的,而类的成员变量是protected,并且两者的访问级别都是不可更改的,只能用默认的访问级别。
刚刚在写代码的时候遇到了一个问题,如下代码所示:

None.gifstatic void ReturnValueTest(Args _args)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    ;
InBlock.gif    CustTable::find(
'4001').AccountNum = '4002';
ExpandedBlockEnd.gif}

编译该代码得到报错信息:
*** 错误: 31,字段必须是允许赋值的数据元素。
也就是说这样赋值是不行的,该函数返回的是一个表变量,我们知道表变量中的字段是public类型的,但通过CustTable::finde('4001')返回的值是只读的,也就是说通过方法返回的表变量是一个常量指针,那如何是好那?X++中一般的做法如下:

None.gifstatic void ReturnValueTest(Args _args)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    CustTable custTable;
InBlock.gif    ;
InBlock.gif    custTable 
= CustTable::find('4001');
InBlock.gif    custTable.AccountNum 
= '4002';
ExpandedBlockEnd.gif}
如果说返回一个常量指针是怕函数返回的对象被客户端代码修改,但在X++里这个常量指针又可以赋值给一般的(非常量)指针,从而修改原有的对象,何必绕这个弯那?

转载于:https://www.cnblogs.com/Farseer1215/archive/2007/07/05/806992.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值