MarshalByRefObject.MemberwiseClone(Boolean) 方法

定義

建立目前 MarshalByRefObject 物件的淺層複本。

C#
protected MarshalByRefObject MemberwiseClone (bool cloneIdentity);

參數

cloneIdentity
Boolean

false,刪除目前 MarshalByRefObject 物件的識別 (Identity),則會在跨遠端界限進行封送處理時將新的識別指定給物件。 false 的值通常是適當的。 true 表示會將目前 MarshalByRefObject 物件的識別複製到其複製品,而造成將遠端用戶端呼叫傳送至遠端伺服器物件。

傳回

MarshalByRefObject

目前 MarshalByRefObject 物件的淺層複本。

備註

MemberwiseClone(Boolean)方法會建立一個新的物件,然後將 MarshalByRefObject 目前物件的非靜態欄位複製到新的物件,藉以建立淺層複製 MarshalByRefObject 。 如果欄位是實值型別,則會執列欄位的位副本。 如果欄位是參考型別,則會複製參考,但是參考的物件不是;因此,原始物件與其複製會參考相同的物件。

例如,假設有一個 MarshalByRefObject 名為 X 的物件參考物件 a 和 B。物件 B 接著參考物件 C。X 的淺層複本會建立新的物件 X2,也會參考物件 A 和 B。相反地,X 的深層複本會建立新的物件 X2,以參考新的物件(即 A 和 B 的複本),然後參考新的物件 C2,也就是複製 C。使用實介面的類別 ICloneable 來執行物件的深層或淺層複製。

物件的識別 MarshalByRefObject 會定義為遠端伺服器物件,此物件為遠端用戶端呼叫的目標。 根據預設,物件的成員複製品 MarshalByRefObject 具有與原始物件相同的身分識別,這通常不是將跨遠端界限封送處理至用戶端的伺服器端物件之複製的正確行為。 指定 false ,這通常適用于刪除複製的身分識別,並在複製透過遠端界限封送處理時,導致指派新的身分識別,或 true 導致複製保留原始物件的身分識別 MarshalByRefObjectMemberwiseClone(Boolean)方法主要是供開發人員用來執行遠端伺服器物件。

適用於

產品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1