メッセージの割り当て図形のメッセージ参照
最初に .NET ベースのオブジェクトをメッセージまたはメッセージ部分に割り当てたときに、メッセージでオブジェクトへの参照が保持および維持されます。
効率とスケーラビリティのために、オーケストレーション エンジンはオブジェクトの "ディープ コピー" を行いません。つまり、オブジェクトの内容全体をメッセージにコピーすることはありません。
その後、オブジェクトを別のメッセージまたはメッセージ部分に割り当てる場合、元のオブジェクトに変更があると、2 番目のメッセージまたはメッセージ部分を変更することになります。 この操作は結果を予測できないため、使用しないでください。
2 番目のメッセージでオブジェクトの明確なコピーが必要な場合は、最初のメッセージまたはメッセージ部分を 2 番目のメッセージまたはメッセージ部分に割り当てる必要があります。
次の例を確認してください。
間違っている構文 :
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 のままです。