一个类可以接收VendTable,CustTable或smmOpportunityTable记录。
对于一个实例,通常会收到CustTable记录,并且新的要求会使smmOpportunityTable发挥作用,因此我使用一条公共记录来捕获这段代码:
(代码中早些时候发生了一些其他事情来设置custTable记录)。
commonParty = custTable.RecId != 0 ? custTable : smmOpportunityTable;
问题是,上面的代码行给出了编译警告“操作数类型与运算符不兼容”。发生在smmOpportunityTable上。
我的问题,为什么我不能将smmOpportunityTable的实例设置为常见?当然它的基本类型常见吗?有任何想法如何解决警告?
我正在开发Dynamics Ax 2012 R1。
答案 0 :(得分:1)
警告实际上只是因为编译器似乎错误地处理了三元运算符的使用。
要删除警告,您只需重写为:
if (custTable)
commonParty = custTable;
else
commonParty = smmOpportunityTable;
if (custTable)
与if (custTable.RecId != 0)
相同。它只是检查是否填充了RecId
字段。
我可能会对你在代码中尝试做的事情感到困惑,但对于赋值的另一面,约定通常如下:
switch (common.TableId)
{
case tableNum(CustTable):
custTable = common as CustTable;
break;
case tableNum(smmOpportunityTable):
smmOpportunityTable = common as smmOpportunityTable;
break;
default:
throw error(strFmt(Error::wrongUseOfFunction(funcName())));
}