首頁 > 後端開發 > C++ > 如何在 C# 中建立物件的真實副本?

如何在 C# 中建立物件的真實副本?

Mary-Kate Olsen
發布: 2025-01-13 12:35:42
原創
392 人瀏覽過

How Can I Create a True Copy of an Object in C#?

C#中物件的複製:深入分析

以下程式碼片段示範了一個場景:兩個物件參考 objectAobjectB 指向 MyClass 類別的相同實例。對於C#中的引用類型,這是常見行為,因為它們只引用記憶體位置,而不是包含資料本身。然而,在某些情況下,需要建立物件的完全獨立副本,並指向不同的記憶體位址。

使用ICloneable進行淺複製

為了實現淺複製(只複製原始物件非引用型別成員的狀態),C# 提供了 ICloneable 介面。實作此介面允許類別定義自訂克隆行為。

<code class="language-csharp">class myClass : ICloneable
{
    public String test;
    public object Clone()
    {
        return this.MemberwiseClone();
    }
}</code>
登入後複製

MemberwiseClone 方法執行物件的淺複製,複製所有非引用型別成員的值。透過實作 ICloneable 並使用 MemberwiseClone 覆寫其 Clone 方法,我們為 MyClass 類別建立了一個自訂克隆機制。

建立獨立物件

要建立 MyClass 的獨立實例,請使用 Clone 方法:

<code class="language-csharp">myClass a = new myClass();
myClass b = (myClass)a.Clone();</code>
登入後複製

這將使 objectB 引用 MyClass 的新實例,該實例與 objectA 具有不同的記憶體位址。但是,必須注意,這是一個淺複製,這意味著物件內的任何引用類型成員仍然指向與原始物件相同的記憶體位置。要實現深複製,通常需要對引用類型成員進行進一步的複製操作。

以上是如何在 C# 中建立物件的真實副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板