Aracılığıyla paylaş


Genel koleksiyonların kullanılma zamanı

Genel koleksiyonları kullanmak, bir temel koleksiyon türünden türetmek ve türe özgü üyeleri uygulamak zorunda kalmadan tür güvenliğinden otomatik olarak yararlanmanızı sağlar. Genel koleksiyon türleri de genellikle, koleksiyon öğeleri değer türleri olduğunda, karşılık gelen nongeneric koleksiyon türlerinden (ve genel olmayan temel koleksiyon türlerinden türetilen türlerden daha iyi) daha iyi performans gösterir, çünkü genel öğelerde öğeleri kutulaya gerek yoktur.

.NET Standard 1.0 veya üzerini hedefleyen programlar için, birden çok iş parçacığı eşzamanlı olarak koleksiyona öğe ekliyor veya kaldırıyor olabilirken ad alanında genel koleksiyon sınıflarını System.Collections.Concurrent kullanın. Ayrıca, değişmezlik istendiğinde ad alanında genel koleksiyon sınıflarını System.Collections.Immutable göz önünde bulundurun.

Aşağıdaki genel türler mevcut koleksiyon türlerine karşılık gelir:

Ek Türler

Bazı genel koleksiyon türlerinin genel olmayan karşılıkları yoktur. Bu ülkelere şunlar dahildir:

  • LinkedList<T> , O(1) ekleme ve kaldırma işlemleri sağlayan genel amaçlı bir bağlantılı listedir.

  • SortedDictionary<TKey,TValue> , O(log n) ekleme ve alma işlemleriyle sıralanmış bir sözlüktür ve bu da bunu için SortedList<TKey,TValue>yararlı bir alternatif haline getirir.

  • KeyedCollection<TKey,TItem> , kendi anahtarlarını içeren nesneleri depolamak için bir yol sağlayan bir liste ile sözlük arasındaki bir karmadır.

  • BlockingCollection<T> sınırlayıcı ve engelleme işlevselliğine sahip bir koleksiyon sınıfı uygular.

  • ConcurrentBag<T> , sıralanmamış öğelerin hızlı bir şekilde eklenmesini ve kaldırılmasını sağlar.

Sabit oluşturucular

Uygulamanızda değişmezlik işlevselliğini istediğinizde, System.Collections.Immutable ad alanı kullanabileceğiniz genel koleksiyon türleri sunar. Sabit koleksiyon türlerinin tümü, birden çok mutasyon gerçekleştirirken performansı en iyi duruma getirebilecek sınıflar sunar Builder . Builder sınıfı işlemleri değiştirilebilir bir durumda toplu olarak işler. Tüm mutasyonlar tamamlandığında, tüm düğümleri "dondurmak" için yöntemini çağırın ToImmutable ve örneğin ImmutableList<T>bir sabit genel koleksiyon oluşturun.

Builder Nesnesi, nongeneric CreateBuilder() yöntemi çağrılarak oluşturulabilir. Bir Builder örnekten öğesini çağırabilirsiniz ToImmutable(). Benzer şekilde, koleksiyondan Immutable* genel sabit koleksiyondan bir oluşturucu örneği oluşturmak için çağırabilirsiniz ToBuilder() . Aşağıdakiler çeşitli Builder türlerdir.

Nesnelere LINQ

LINQ to Objects özelliği, nesne türü veya System.Collections.Generic.IEnumerable<T> arabirimini uyguladığı sürece bellek içi nesnelere erişmek için LINQ sorgularını System.Collections.IEnumerable kullanmanızı sağlar. LINQ sorguları verilere erişmek için ortak bir desen sağlar; genellikle standart foreach döngülerden daha kısa ve okunabilirdir; filtreleme, sıralama ve gruplandırma özellikleri sağlar. LINQ sorguları performansı da iyileştirebilir. Daha fazla bilgi için bkz . LINQ to Objects (C#), LINQ to Objects (Visual Basic)ve Parallel LINQ (PLINQ).

Ek İşlevsellik

Bazı genel türler, genel olmayan koleksiyon türlerinde bulunmayan işlevlere sahiptir. Örneğin, List<T> genel ArrayList olmayan sınıfa karşılık gelen sınıfın, listede arama yapmak için yöntemler belirtmenize olanak tanıyan temsilci, listenin Action<T> her öğesi üzerinde işlem yapan yöntemleri temsil eden temsilci ve Converter<TInput,TOutput> türler arasında dönüştürmeleri tanımlamanızı sağlayan temsilci gibi Predicate<T> genel temsilcileri kabul eden bir dizi yöntemi vardır.

sınıfı, List<T> listeyi sıralamak ve aramak için kendi IComparer<T> genel arabirim uygulamalarınızı belirtmenize olanak tanır. SortedDictionary<TKey,TValue> ve SortedList<TKey,TValue> sınıfları da bu özelliğe sahiptir. Buna ek olarak, bu sınıflar koleksiyon oluşturulduğunda karşılaştırıcıları belirtmenize olanak sağlar. Benzer şekilde, Dictionary<TKey,TValue> ve KeyedCollection<TKey,TItem> sınıfları kendi eşitlik karşılaştırıcılarınızı belirtmenize olanak tanır.

Ayrıca bkz.