Freigeben über


Nachrichtenverweise in der Nachrichtenzuweisungsform

Beim ersten Zuweisen eines .NET-basierten Objekts an eine Nachricht oder einen Nachrichtenteil hält und verwaltet die Nachricht einen Verweis auf das Objekt.

Für Effizienz und Skalierbarkeit führt das Orchestrierungsmodul keine "tiefe Kopie" des Objekts durch: d. h., es kopiert nicht den gesamten Inhalt des Objekts in die Nachricht.

Wenn Sie das Objekt anschließend einem anderen Nachrichten- oder Nachrichtenteil zuweisen, führen Änderungen am ursprünglichen Objekt zu Änderungen an der zweiten Nachricht oder dem zweiten Nachrichtenteil. Sie sollten diese Übung vermeiden, da Die Ergebnisse unvorhersehbar sind.

Wenn Ihre zweite Nachricht eine separate Kopie des Objekts haben soll, sollten Sie der zweiten Nachricht oder dem zweiten Nachrichtenteil die erste Nachricht oder den ersten Nachrichtenteil zuweisen.

Betrachten Sie das folgenden Beispiel:

Irrweg:

myMsg1 = myObj; // assign the first message  
myMsg2 = myObj; // assign the second message (wrong!)  
myMsg2.myInt = 100; // modify the second  
myMsg1.myInt = 5;  

In diesem Fall wurde myMsg2.myInt überschrieben und hat jetzt den Wert 5.

Richtiger Weg:

myMsg1 = myObj; // assign the first message  
myMsg2 = myMsg1; // assign the second message (right!)  
myMsg2.myInt = 100; // modify the second  
myMsg1.myInt = 5;  

In diesem Fall weist myMsg2.myInt weiterhin den Wert 100 auf, wie erwartet.

Siehe auch

Erstellen von Nachrichten