导航

Message Assign Shape中的消息引用问题

Posted on 2008-12-11 17:32  鸡尾虾的壳  阅读(137)  评论(0编辑  收藏  举报

消息之间的赋值并不是"deep copy",本质上是odx.cs中XLANGMessage类对象间的引用关系。

假设:Message_1, Message_2, Message_3属于同一消息类型。

在一个Construct Message Shape中可以同时构造若干个Message,如下:
Message_2=Message_1;
Message_3=Message_1;
Message_3.IntField=100;
Message_2.IntField=50;
事实上,代码执行后Message_3.IntField已经变成50了,而不是100, 这3个消息之间的引用关系如下:
Message_2--->Message_1<------Message_3

如果上面的代码改为:
Message_2=Message_1;
Message_3=Message_2;
Message_3.IntField=100;
Message_2.IntField=50;
那么,代码执行后Message_3.IntField值是100,Message_2.IntField值为50,3个消息之间的引用关系如下:
Message_3---->Message_2------>Message_1

Reference:http://msdn.microsoft.com/en-us/library/aa559807.aspx