SORU
21 EKİM 2008, Salı


Nasıl C genel bir liste klon muyum#?

C nesnelerin genel bir listesi var# ve liste klon istiyoruz. Liste içindeki öğeleri cloneable, ama list.Clone() yapmak için bir seçenek yok.

Bunu çözmenin kolay bir yolu var mı?

CEVAP
21 EKİM 2008, Salı


Eğer elemanları değer türleri, sadece bunu yapabilirsiniz:

List<YourType> newList = new List<YourType>(oldList);

Referans türleri ve derin bir kopyasını istiyorsanız ancak, bazı elementler düzgün ICloneable uygulamak varsayarak), bu gibi bir şey yapabilirsin:

List<ICloneable> oldList = new List<ICloneable>();
List<ICloneable> newList = new List<ICloneable>(oldList.Count);

oldList.ForEach((item) =>
    {
        newList.Add((ICloneable)item.Clone());
    });

Belli ki, her öğe türü uygular ICloneable yukarıdaki jenerik ve cast ICloneable değiştirin.

Öğe türü ICloneable desteklemiyor ama kopya-yapıcı bir varsa, bunun yerine yapabilirsiniz:

List<YourType> oldList = new List<YourType>();
List<YourType> newList = new List<YourType>(oldList.Count);

oldList.ForEach((item)=>
    {
        newList.Add(new YourType(item));
    });

Kişisel olarak, tüm üyeleri derin bir kopyasını garanti etmek için ihtiyaç ICloneable kaçınmak olacaktır. Bunun yerine, kopya yapıcı veya YourType yeni bir örneğini döndürür YourType.CopyFrom(YourType itemToCopy) gibi bir fabrika yöntemini öneririm.

Bu seçeneklerden herhangi bir yöntem (uzantısı veya başka) tarafından sarılmış olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8bitdigitaltv

    8bitdigitalt

    31 AĞUSTOS 2011
  • Excel Video Tutorials

    Excel Video

    6 Aralık 2012
  • TheGamer2323

    TheGamer2323

    25 Ocak 2009