在.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中文網其他相關文章!