Soru & Cevap
danego61
19.11.2021 - 02:56
Merhabalar;
Bu zamana kadar neden kimse cevap vermemiş cidden çok merak ediyorum. Forumda aktif değilim. Sorunun cevabına gelirsek bildiğim kadarıyla anlatmaya çalışayım.
List bir sınıftır. List sınıfı sayesinde biz c#'da listeler oluşturabiliyoruz. ICollection ise bir interface yani arayüz. ICollection arayüzünden new anahtarı ile yeni instance oluşturamayız. Fakat c#'da şöyle bir durum var. Tüm koleksiyonlar ICollection interface'sini implement ederler yani ondan türerler. Bu sayede her hangi bir listeye ihtiyaç duyduğun zaman bunu ICollection tipinde tanımlayıp kullanabilirsin. Bu şekilde tanımladığın zaman List sınıfına bağımlı olmazsın.
Örneğin:
List<int> liste = new List<int>();
Uygulamada şöyle bir tanımlama yaptın. Böyle bir kullanım senaryosunda sen list yerine arraylist kullanma kararı aldığında, sadece list yerine arraylist yazmak işi kurtaramayabiliyor. Sen list yerine arraylist yazdığın zaman nesnenin fonksiyonları değişiyor ve sen değişen bu fonksiyonlarıda kodunu da değiştirmen gerekiyor.
ICollection<int> liste = new List<int>();
Eğer şu şekilde tanımlama yapıp kodlamanı yaparsan, artık list sınıfına bağımlı olmaktan kurtuluyorsun ve ileride list yerine "= new ArrayList<int>()" yazdığın zamanda kodun sıkıntısız bir şekilde çalışmaya devam ediyor.
Umarım açıklayıcı olmuştur.
Muhittin Akın
10.12.2021 - 09:00
Merhaba,
Verdiğiniz detaylı bilgiden dolayı çok teşekkür ederim.
Gayet açıklayıcı bir şekilde anlatmışsınız.