消息之间的赋值并不是"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