.NET에서 일반 사전의 전체 복사본 생성
일반 사전의 전체 복사본 복제 또는 수행(< cref="Dictionary{ 참조) TKey, TValue}"/>)는 원본에 영향을 주지 않고 원본 데이터 구조를 보존하는 데 필수적입니다. 다음은 몇 가지 접근 방식입니다.
얕은 복제를 사용하는 ToDictionary() 메서드:
키 및 값 참조가 복사되는 얕은 복사본만 필요한 경우 < cref="System.Linq.Enumerable.ToDictionary{TSource, TKey, TElement}(IEnumerable{TSource}, 참조 Func{TSource, TKey}, Func{TSource, TElement})"/> 방법을 사용할 수 있습니다. 다음 예는 얕은 복사를 보여줍니다.
var originalDict = new Dictionary<string, int> { { "Key1", 1 }, { "Key2", 2 } }; var shallowCopyDict = originalDict.ToDictionary(entry => entry.Key, entry => entry.Value);
심층 복제를 사용하는 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; }
접근 방식 선택은 필요한 복제 깊이와 애플리케이션의 특정 요구 사항에 따라 달라집니다. < cref="ToDictionary()"/> 적절한 키와 요소 선택기를 사용하는 방법은 얕은 복사본과 깊은 복사본을 모두 생성하는 다양한 방법을 제공합니다.
위 내용은 .NET에서 일반 사전의 전체 복사본을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!