Çünkü bir dizi indekse göre hızlı erişime izin verir ve IList
/ IList<T>
is bunu destekleyen tek arabirimdir. Yani belki de asıl sorunuz "Neden dizin oluşturucularla sürekli koleksiyonlar için bir arayüz yok?" Ve buna cevabım yok.
Koleksiyonlar için de salt okunur arabirimler yoktur. Ve ben bu indeksler arayüzü ile sabit bir boyut daha bile eksik.
IMO, bir koleksiyonun özelliklerine bağlı olarak birkaç (genel) toplama arabirimi daha olmalıdır. Ve isimleri de farklı olmalı, List
çünkü bir indeksleyici ile bir şey gerçekten aptal IMO.
- Sadece Numaralandırma
IEnumerable<T>
- Salt okunur ancak dizin oluşturucu yok (.Count, .Contains, ...)
- Yeniden boyutlandırılabilir, ancak dizinleyici yok, yani (Ekle, Kaldır, ...) akımı gibi ayarla
ICollection<T>
- Dizin oluşturucu ile salt okunur (dizin oluşturucu, dizin oluşturucu, ...)
- Dizinleyici ile sabit boyut (ayarlayıcılı dizinleyici)
- Dizinleyici (Ekle, ...) akımıyla değişken boyut
IList<T>
Mevcut koleksiyon arayüzlerinin kötü tasarım olduğunu düşünüyorum. Ancak, hangi yöntemlerin geçerli olduğunu söyleyen özelliklere sahip oldukları için (ve bu, bu yöntemlerin sözleşmesinin bir parçasıdır), ikame ilkesini ihlal etmez.