>백엔드 개발 >C++ >.NET 일반 사전을 어떻게 딥클론하나요?

.NET 일반 사전을 어떻게 딥클론하나요?

DDD
DDD원래의
2024-12-30 16:46:13782검색

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으로 문의하세요.