Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencipta Salinan Dalam Kamus Generik dalam .NET?

Bagaimana untuk Mencipta Salinan Dalam Kamus Generik dalam .NET?

Patricia Arquette
Lepaskan: 2025-01-04 15:16:39
asal
374 orang telah melayarinya

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

Mencipta Salinan Dalam Kamus Generik dalam .NET

Mengklon atau melakukan salinan mendalam kamus generik () adalah penting untuk mengekalkan struktur data asal tanpa menjejaskan asal. Berikut ialah beberapa pendekatan:

Kaedah ToDictionary() dengan Pengklonan Cetek:

Jika anda hanya memerlukan salinan cetek di mana rujukan kunci dan nilai disalin, < lihat cref="System.Linq.Enumerable.ToDictionary{TSource, TKey, TElement}(IEnumerable{TSource}, Func{TSource, TKey}, Func{TSource, TElement})"/> kaedah boleh digunakan. Contoh berikut menunjukkan salinan cetek:

var originalDict = new Dictionary<string, int> { { "Key1", 1 }, { "Key2", 2 } };
var shallowCopyDict = originalDict.ToDictionary(entry => entry.Key, entry => entry.Value);
Salin selepas log masuk

Kaedah ToDictionary() dengan Pengklonan Dalam:

Jika anda memerlukan salinan dalam di mana objek bersarang juga disalin secara rekursif , anda boleh menggunakan antara muka untuk melaksanakan pengklonan pada jenis nilai. Contoh berikut menunjukkan salinan dalam menggunakan pengklonan:

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());
Salin selepas log masuk

Kaedah Pengklonan Tersuai:

Sebagai alternatif, anda boleh mencipta kaedah pengklonan tersuai khusus untuk struktur data anda. Kaedah ini akan berulang ke atas kamus, mencipta contoh baharu bagi objek kunci dan nilai, dan menetapkan nilai dengan sewajarnya. Berikut ialah contoh:

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;
}
Salin selepas log masuk

Pilihan pendekatan bergantung pada kedalaman pengklonan yang diperlukan dan keperluan khusus permohonan anda. kaedah dengan pemilih kunci dan elemen yang betul menyediakan cara yang serba boleh untuk mencipta salinan cetek dan dalam.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Salinan Dalam Kamus Generik dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan