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
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.
Nasıl Java genel bir Liste klon muyum?...
Nasıl rastgele bir liste Python kullan...
Nasıl boş olmayan bir dizine klon muyu...
Nasıl yerel olarak çalıştırmak için gi...
nasıl fonksiyonları kabuk tanımlı list...