訊息指派圖形中的訊息參考
當您首次將以 .NET 為基礎的物件指派到訊息或訊息部分時,該訊息便會保留並維護物件的參考。
為了提高效率和延展性,協調流程引擎不會執行物件的「深層複本」:也就是說,它不會將物件的整個內容複寫到訊息。
如果您接著將物件指派到另一個訊息或訊息部分,針對原始物件的任何修改都會造成第二個訊息或訊息部分的修改。 您應該避免這種做法,因為結果會是無法預期的。
如果需要讓第二個訊息具有物件的不同複本,您就應該將第一個訊息或訊息部分指派給第二個訊息或訊息部分。
請思考一下下列範例:
錯誤方式:
myMsg1 = myObj; // assign the first message
myMsg2 = myObj; // assign the second message (wrong!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
在此情況下,myMsg2.myInt 已經遭到覆寫,而且現在具有 5 的值。
正確方式:
myMsg1 = myObj; // assign the first message
myMsg2 = myMsg1; // assign the second message (right!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
在此情況下,myMsg2.myInt 依然具有 100 的值,這點與預期相同。.