首頁 > 後端開發 > C++ > 如何在 .NET 中建立通用字典的深層副本?

如何在 .NET 中建立通用字典的深層副本?

Patricia Arquette
發布: 2025-01-04 15:16:39
原創
335 人瀏覽過

How to Create Deep Copies of Generic Dictionaries in .NET?

在.NET 中建立通用字典的深層副本

複製或執行通用字典的深層副本() 對於保留原始資料結構而不影響原始資料至關重要。以下是一些方法:

淺克隆的ToDictionary() 方法:

如果您只需要複製鍵和值引用的淺副本,則

var originalDict = new Dictionary<string, int> { { "Key1", 1 }, { "Key2", 2 } };
var shallowCopyDict = originalDict.ToDictionary(entry => entry.Key, entry => entry.Value);
登入後複製

請參閱cref="System.Linq.Enumerable.ToDictionary{TSource, TKey, TElement}(IEnumerable{TSource}, Func{TSource, TKey}, Func{TSource, TElement})"/>可以使用方法。以下範例示範了淺複製:

具有深度克隆的ToDictionary()方法:

class CloneableValue : ICloneable
{
    public int Value { get; set; }

    public object Clone()
    {
        return new CloneableValue { Value = this.Value };
    }
}

Dictionary<string, CloneableValue> originalDict = new Dictionary<string, CloneableValue> { { "Key1", new CloneableValue() { Value = 1 } } };
var deepCopyDict = originalDict.ToDictionary(entry => entry.Key, entry => (CloneableValue)entry.Value.Clone());
登入後複製

如果您需要深度複製,其中嵌套物件也被遞歸複製,您可以使用;用於實現值類型克隆的介面。以下範例顯示使用複製的深層複製:

自訂複製方法:

public static Dictionary<string, T> CloneDictionary<T>(Dictionary<string, T> originalDict)
{
    Dictionary<string, T> cloneDict = new Dictionary<string, T>();
    foreach (KeyValuePair<string, T> entry in originalDict)
    {
        cloneDict.Add(entry.Key, (T)entry.Value);
    }
    return cloneDict;
}
登入後複製

或者,您可以建立特定於您的資料結構的自訂克隆方法。此方法將迭代字典,建立鍵和值物件的新實例,並相應地指派值。這是一個範例:

方法的選擇取決於所需複製的深度和應用程式的特定要求。 具有適當的鍵和元素選擇器的方法提供了一種創建淺拷貝和深拷貝的通用方法。

以上是如何在 .NET 中建立通用字典的深層副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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