Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Koleksiyon sınıfınızı dikkatle seçtiğinizden emin olun. Yanlış türü kullanmak koleksiyon kullanımınızı kısıtlayabilir.
Önemli
System.Collections ad alanındaki türleri kullanmaktan kaçının. Daha fazla tür güvenliği ve diğer geliştirmeler nedeniyle koleksiyonların genel ve eşzamanlı sürümleri önerilir.
Aşağıdaki soruları göz önünde bulundurun:
Öğenin değeri alındıktan sonra genellikle atıldığı sıralı bir listeye ihtiyacınız var mı?
Evet ise, ilk gelen ilk çıkar (FIFO) davranışına ihtiyacınız varsa, Queue sınıfını veya Queue<T> genel sınıfını kullanmayı göz önünde bulundurun. Son giren, ilk çıkar (LIFO) davranışına ihtiyacınız varsa, Stack sınıfını veya Stack<T> bir genel sınıfı kullanmayı göz önünde bulundurun. Birden çok iş parçacığı tarafından güvenli erişim sağlamak için, eşzamanlı sürümleri ConcurrentQueue<T> ve ConcurrentStack<T> kullanın. Değişmezlik için sabit sürümleri ImmutableQueue<T> ve ImmutableStack<T>değerlerini göz önünde bulundurun.
Aksi takdirde diğer koleksiyonları kullanmayı göz önünde bulundurun.
Öğelere FIFO, LIFO veya rastgele gibi belirli bir sırada mı erişmeniz gerekiyor?
Sınıfın Queue yanı Queue<T>sıra , ConcurrentQueue<T>ve ImmutableQueue<T> genel sınıflarının tümü FIFO erişimi sunar. Daha fazla bilgi için bkz. Thread-Safe Koleksiyonu Ne Zaman Kullanılır?
Sınıfın Stack yanı Stack<T>sıra , ConcurrentStack<T>ve ImmutableStack<T> genel sınıflarının tümü LIFO erişimi sunar. Daha fazla bilgi için bkz. Thread-Safe Koleksiyonu Ne Zaman Kullanılır?
Genel LinkedList<T> sınıf, baştan kuyruğa veya kuyruktan başa sıralı erişim sağlar.
Her öğeye dizine göre erişmeniz gerekiyor mu?
ArrayList ve StringCollection sınıfları ve List<T> genel sınıfı, sıfır tabanlı indeks kullanarak öğelerine erişim sağlar. Değişmezlik için sabit genel sürümleri ImmutableArray<T> ve ImmutableList<T>değerlerini göz önünde bulundurun.
Hashtable, SortedList, ListDictionary, ve StringDictionary sınıfları ve Dictionary<TKey,TValue> ve SortedDictionary<TKey,TValue> genel sınıfları, öğesinin anahtarıyla öğelerine erişim sunar. Ayrıca, çeşitli karşılık gelen türlerin sabit sürümleri vardır: ImmutableHashSet<T>, ImmutableDictionary<TKey,TValue>, ImmutableSortedSet<T>ve ImmutableSortedDictionary<TKey,TValue>.
NameObjectCollectionBase ve NameValueCollection sınıfları ve ve KeyedCollection<TKey,TItem>SortedList<TKey,TValue> genel sınıfları, sıfır tabanlı dizine veya öğenin anahtarına göre öğelerine erişim sağlar.
Her öğe bir değer, bir anahtar ve bir değerin birleşimi veya bir anahtar ile birden çok değerin birleşimini mi içerecek?
Tek bir değer: IList arabirimi veya IList<T> genel arabirimine dayanan koleksiyonlardan herhangi birini kullanın. Sabit bir seçenek için genel arabirimi göz önünde bulundurun IImmutableList<T> .
Bir anahtar ve bir değer: IDictionary arabirimine veya IDictionary<TKey,TValue> genel arabirimine dayalı herhangi bir koleksiyonu kullanın. Sabit bir seçenek için IImmutableSet<T> veya IImmutableDictionary<TKey,TValue> genel arabirimlerini göz önünde bulundurun.
Katıştırılmış anahtar içeren bir değer: Genel sınıfı kullanın KeyedCollection<TKey,TItem> .
Bir anahtar ve birden çok değer: sınıfını NameValueCollection kullanın.
Öğeleri girildiği şekilden farklı bir şekilde sıralamanız mı gerekiyor?
sınıfı, Hashtable öğelerini karma kodlarına göre sıralar.
SortedList sınıfı ve ve SortedList<TKey,TValue>SortedDictionary<TKey,TValue> genel sınıfları öğelerini anahtara göre sıralar. Sıralama düzeni, IComparer sınıfı için SortedList arabiriminin uygulanmasına ve IComparer<T> ile SortedList<TKey,TValue> genel sınıflar için SortedDictionary<TKey,TValue> genel arabiriminin uygulanmasına dayanır. İki genel türden daha SortedDictionary<TKey,TValue> iyi performans SortedList<TKey,TValue>sunarken SortedList<TKey,TValue> daha az bellek tüketir.
ArrayList, bir Sort uygulamasını parametre olarak alan bir IComparer yöntemi sağlar. Genel karşılığı olan List<T> genel sınıfı, Sort genel arabirimin bir uygulamasını parametre olarak alan bir IComparer<T> yöntemi sağlar.
Hızlı aramalara ve bilgilerin alınmasına mı ihtiyacınız var?
- ListDictionary küçük koleksiyonlardan (10 veya daha az öğe) daha Hashtable hızlıdır. Dictionary<TKey,TValue> generic sınıf, SortedDictionary<TKey,TValue> generic sınıfa göre daha hızlı arama sağlar. Çok iş parçacıklı uygulama şeklindedir ConcurrentDictionary<TKey,TValue>. ConcurrentBag<T> sıralanmamış veriler için hızlı çok iş parçacıklı ekleme sağlar. Her iki çok iş parçacıklı tür hakkında daha fazla bilgi için bkz: Thread-Safe Koleksiyonu Ne Zaman Kullanılır.
Yalnızca dizeleri kabul eden koleksiyonlara mı ihtiyacınız var?
StringCollection (IList temelinde) ve StringDictionary (IDictionary temelinde) System.Collections.Specialized ad alanındadır.
Ayrıca, System.Collections.Generic ad alanında bulunan genel koleksiyon sınıflarından herhangi birini, genel tür bağımsız değişkenleri için String sınıfını belirleyerek güçlü türde dize koleksiyonları olarak kullanabilirsiniz. Örneğin, bir değişkeni Liste<Dizesi veya Sözlük Dizesi,Dize><türünde olacak şekilde bildirebilirsiniz.>
LINQ to Objects ve PLINQ
LINQ to Objects, geliştiricilerin nesne türü IEnumerable veya IEnumerable<T> uyguladığı sürece bellek içi nesnelere erişmek için LINQ sorgularını kullanmasına olanak tanır. LINQ sorguları verilere erişmek için ortak bir desen sağlar, genellikle standart foreach döngülere göre daha kısa ve okunabilirdir ve filtreleme, sıralama ve gruplandırma özellikleri sağlar. Daha fazla bilgi için bkz. LINQ to Objects (C#) ve LINQ to Objects (Visual Basic).
PLINQ, çok çekirdekli bilgisayarların daha verimli kullanımı aracılığıyla birçok senaryoda daha hızlı sorgu yürütme sunabilen NESNELERE LINQ'in paralel bir uygulamasını sağlar. Daha fazla bilgi için bkz. Parallel LINQ (PLINQ).