這只是一個'出於好奇'的問題,所以我不能提供一個基於當前問題的真實世界示例,但是有一些虛擬代碼應該足夠了。我想知道的是,如果有一種直接(並且特別快速)的方式將對象的實例映射到'this'(當前實例的類型完全相同,可以訪問私有成員等)將對象實例映射到'this'?
public class MyObject {
public MyObject(MyObject other) {
// of course, won't work
this = other;
}
}
我見過的所有示例和操作方法都是過度使用反射,甚至構建完整的表達式樹或使用像Automapper這樣的框架,當想法看起來「相當平凡」時,它們都有自己的侷限性。爲什麼不可能將所有指針/引用等從內存中的某個位置複製到另一個位置,因爲分配的空間等是完全相同的?
您可以使用ISerializable –
克隆它因爲「複製」是一個比您假設的更復雜的複雜過程。假設類有一個List類型的字段。你是否複製引用,或者你是否創建了一個新列表並將其中的元素複製到它中?如果你使用後者,你是複製項目引用還是需要複製項目對象?他們的領域應該發生什麼?如果您沒有足夠的訪問權限來做到這一點,該怎麼辦?試着用語言解決這個問題,你會得到一個C++ frankenlanguage。 –