我有一組從一個BaseObject繼承的對象,它們具有一些全局原始屬性(索引等)。現在,我有兩個對象,其中一個對象(目標對象)僅具有基本屬性的值,另一個對象(源對象之一)具有所有其他屬性的值(從第3個第三方應用程序),但基礎的。某些更新從方法中丟棄
我試圖將所有源對象的屬性複製到目標對象,但保留目標的基本屬性的值。換句話說 - 我試圖在不刪除任何東西的情況下等於兩個對象的屬性值... target = source;只會刪除目標的基指數... 所以,我做它獲取作爲參數的兩個對象(鑄造到BaseObject)的方法和目標的指標的值複製到源以前生產的副本,就像這樣:
Public void Copy(BaseObject source, BaseObject target)
{
//Copy all primitive indexes here...
source.index = target.index;
source.reference = target.reference;
etc…
//Copy the updated object to the target one...
target = source;
}
在方法內部的調試模式下它似乎沒問題,但是 - 當我的代碼退出該方法時,我驚訝地發現儘管源對象已經同時被繼承和非繼承屬性更新,但目標值仍然保持不變。 所以,我不得不再次複製(更新)源到目標的方法外,像這樣:
InheritedObject sourceObj = CreateObjectWithPrimitiveIndexes();
InheritedObject targetObj = GetObjectWithNoIndexesFrom3rdParty();
targetObj.Copy(source: sourceObj, target: targetObj);
//The targetObject is not updated, so I have to re-copy it outside the Copy() method
targetObj = sourceObj;
有人可以解釋我爲什麼sourceObj被更新,因爲它被髮送到副本()方法通過引用,但目標obj的行爲就像它發送的val和它的所有更新都被忽略外的方法... ???
我是否可以使用'ref','out'關鍵詞我在方法簽名等?