首頁 >後端開發 >C++ >如何深度複製 .NET 通用字典?

如何深度複製 .NET 通用字典?

DDD
DDD原創
2024-12-30 16:46:13776瀏覽

How to Deep Clone a .NET Generic Dictionary?

深度克隆.NET 通用字典

當您想要保留其內容時,克隆.NET 通用字典至關重要資料不修改原始資料。本指南探討深度克隆字典的最佳實踐。

淺克隆與深度克隆

淺拷貝建立一個引用字典的新字典來源字典中的原始對象,而深層複製建立新物件。在這種情況下,您需要深層複製以確保對複製的字典所做的任何更改都不會影響原始字典。

基於LINQ 的解決方案

如果您當使用.NET 3.5 或更高版本時,LINQ ToDictionary 方法為深度學習提供了一個簡單的解決方案複製:

var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, entry => (T)entry.Value.Clone());

此方法使用複製的鍵值對建立一個新字典。但是,如果T 沒有實作ICloneable,您可以使用簡單的賦值:

var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, entry => entry.Value);

自訂複製解決方案

您也可以實作自訂複製方法,使用反射來建立字典中所有物件的新實例。如果T實作了ICloneable,則可以使用以下方法:

public static Dictionary<TKey, TValue> Clone<TKey, TValue>(Dictionary<TKey, TValue> original)
{
    var clonedDictionary = new Dictionary<TKey, TValue>();
    foreach (var entry in original)
        clonedDictionary.Add(entry.Key, (TValue)entry.Value.Clone());
    return clonedDictionary;
}

以上是如何深度複製 .NET 通用字典?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn