şey inşa etmek dizisi-listesini sıralamak zorunda olacak unutmayın etmeyin List<T>
; onun sadece kendiniz yapıp yapmadığınızı veya başka bir (framework/utility) metoduna bırakıp bırakmadığınızı. Bu bir kerelik ise
, siz (dönüşüm yapmak için bir "yerinde" foreach
döngü kullanarak) önlemek isteyen çözüm mükemmel makul bir seçenektir. Eğer bunu oldukça sık yapıyorsanız, bunu cdhowie'nin cevabında olduğu gibi jenerik bir yardımcı programa çıkarabilirsiniz.
sizin kısıtlama yalnızca ise bunu bu hedef .NET 2.0 (ancak 3 C# kullanabilirsiniz), .NET 2.0 için LINQ nesnelere bir reimplementation olan LINQBridge, düşünün. Bu, değiştirmeden sağladığınız Cast
örneğini kullanmanıza izin verecektir. Çok C# 2 üzerinde çalışacak, ancak, daha iyi tip-çıkarım uzantısı-yöntem sözdizimi faydalarını almazsınız vb
Performansta önemsemez, ne de gitmek istiyorum yapmazsanız
: bir yardımcı yöntem yazma bela, (bu bütün bir foreach daha o kısa değildir)
List<T>
ile iyi oynar bir ara dizi oluşturarak, yardım için inşa in-
ArrayList.ToArray
yöntemi kullanabilirsiniz
ArrayList arrayList = ...
// Create intermediary array
BookingData[] array = (BookingData[]) arrayList.ToArray(typeof(BookingData));
// Create the List<T> using the constructor that takes an IEnumerable<T>
List<BookingData> list = new List<BookingData>(array);
Son olarak, eğer mümkünse eski olmayan jenerik koleksiyon sınıflarını kullanmayı bırakmayı öneririm.() Yöntemi, bir Liste temsilini oluşturmak için sentetik şekerin başka bir şey değildir ama içten o da kullanıyor
// untested
List<T> ConvertArrayList<T>(ArrayList data)
{
List<T> result = new List<T> (data.Count);
foreach (T item in data)
result.Add(item);
return result;
}
...
List<BookingData> newList = ConvertArrayList<BookingData>(oldList);
C# dizisinde gerçekten "ArrayList" i "List" e çevirmeniz gerekiyor mu? – khachik
@khachik: 'ArrayList'' Nesne' türündedir ve 'Liste' genel bir türdür. – Bobby
@khachik, ikisi de C# 'daki somut sınıflar. –