C# List<T> Nasıl Kullanılır?. Dersimiz ile C# eğitimlerimize devam ediyoruz. C Sharp List verileri veya nesneleri listelememizi sağlar. Hemen hemen herşeyin listesini yapabiliriz. Örneğin textbox listesi, int listesi vs. vs. Listelerin listesini bile. ;)
C# List<T> Nasıl Kullanılır?
Generic List olarak adlandırılan bu sınıf System.Collections.Generic altında bulunur. List sınıfı koleksiyon türündendir. Dizi mantığında çalışan bu sınıf dizilerden daha gelişmiş özelliklere sahiptir. Standart bir diziyi tanımlarken boyutunu da tanımlama sırasında belirlemek gerekir. Fakat koleksiyonlar için bu durum söz konusu değildir. Listeye eleman ekledikçe boyutu artmaya devam eder.
List sınıfı tanımlanırken T tip değişkenini alır. Yani listenin içeriğinde hangi türden nesne yada değişkenlerin olacağını belirler. Bu tanımlama sonucunda artık tanımlanan tipten farklı bir tür listenin içine eklenemez. Konuyu biraz daha anlayabilmek için kullanımına göz atalım.
Şimdi bu nesneleri nasıl kullanabiliriz ona bakalım.
C# Hakkındaki diğer derslerim için tıklayabilirsiniz.
.Add Metodu ile listeye ekleme yaparız.
List<string> YeniListem = new List<string>(); //yeni bir liste oluşturduk ve içerisine string türünden atama yapacağımızı belirttik YeniListem.Add("Mustafa"); YeniListem.Add("Ahmet"); YeniListem.Add("Veli"); YeniListem.Add("Ali"); // .Text felan yazmıyoruız. Direk nesnenin adını(name) yazıyoruz.
En basit şekilde kullanımı örnekteki gibidir.
C Sharp List Sınıfı Clear() (Temizleme)
Performans açısından C# List<T> ile işimiz bittiğinde içeriğini de temizlememiz gerekmektedir. Aşağıda gördüğünüz şekilde listeyi temizleyebilirsiniz.
YeniListem.Clear();
C Sharp List Sınıfı Count (Eleman Sayısını Bulmak)
int Adet = YeniListem.Count;
C Sharp List Sınıfı Contains (İçinde Arama Yapmak)
Bu işlemi Contains Metodu ile yaparız. Ama sonuç olarak true yada false olarak dönüş yapar. Yani var yada yok der.
List<string> YeniListem = new List<string>(); //yeni bir liste oluşturduk ve içerisine string türünden atama yapacağımızı belirttik YeniListem.Add("Mustafa"); YeniListem.Add("Ahmet"); YeniListem.Add("Veli"); YeniListem.Add("Ali"); bool Kontrol = YeniListem.Contains("Ali"); // Sonuç true olarak dönecektir. // .Text felan yazmıyoruız. Direk nesnenin adını(name) yazıyoruz.
C Sharp List Sınıfı AddRange (Başka Listeden Aktarma)
Listeye eleman eklemenin bir başka yolu da AddRange metodunu kullanarak, bir başka listeyi tek seferde eklemektir. Bunun için elimizde aynı türde iki tane liste var diyelim. AddRange ile bu iki listeyi birleştirebiliriz. Şahsen ben hiç kullanmadım bu özelliği ki böyle bir şeye ihtiyacım da olmadı.
Örnekteki listemize başka listeden veri alalım.
List<string> YeniListem = new List<string>(); //yeni bir liste oluşturduk ve içerisine string türünden atama yapacağımızı belirttik YeniListem.Add("Mustafa"); YeniListem.Add("Ahmet"); YeniListem.Add("Veli"); YeniListem.Add("Ali"); List<string> StringListem = new List<string>(); //yeni bir liste oluşturduk ve içerisine string türünden atama yapacağımızı belirttik YeniListem.Add("Ayşe"); YeniListem.Add("Melek"); YeniListem.Add("Merve"); YeniListem.Add("Çiğdem"); YeniListem.AddRange(StringListem); //YeniListem adlı listeye StringListem' deki verileri aktarmış olduk.
C Sharp List Sınıfı Remove (Listeden Veri Silme)
Bu işlemi Remove metodu ile yapıyoruz.
List<string> YeniListem = new List<string>(); //yeni bir liste oluşturduk ve içerisine string türünden atama yapacağımızı belirttik YeniListem.Add("Mustafa"); YeniListem.Add("Ahmet"); YeniListem.Add("Veli"); YeniListem.Add("Ali"); YeniListem.Remove("Ali"); // Ali verisi listeden silindi. // .Text felan yazmıyoruız. Direk nesnenin adını(name) yazıyoruz.
C Sharp List Sınıfı IndexOf (Listedeki Sırasını Bulmak)
Bir verinin listede kaçıncı sırada olduğunu IndexOf metodu ile bulabiliriz.
List<string> YeniListem = new List<string>(); //yeni bir liste oluşturduk ve içerisine string türünden atama yapacağımızı belirttik YeniListem.Add("Mustafa"); YeniListem.Add("Ahmet"); YeniListem.Add("Veli"); YeniListem.Add("Ali"); int Sira = YeniListem.IndexOf("Ali"); //
C Sharp List Sınıfı Sort (Listedeki Verileri Sıralamak)
Listedeki verileri sıralamak isterseniz bu metodu kullanbilirsiniz. A-Z yada 0-9 olarak yani asc olarak sıralar.
List<string> YeniListem = new List<string>(); //yeni bir liste oluşturduk ve içerisine string türünden atama yapacağımızı belirttik YeniListem.Add("Mustafa"); YeniListem.Add("Ahmet"); YeniListem.Add("Veli"); YeniListem.Add("Ali"); YeniListem.Sort();
Textbox vs nesneler içinde C# List<T> yapabiliriz demiştik. Onu nasıl yapacağımızı görelim.
List<TextBox> YeniListem = new List<TextBox>(); //yeni bir liste oluşturduk ve içerisine string türünden atama yapacağımızı belirttik YeniListem.Add(txt_KullaniciAdi); // .Text felan yazmıyoruız. Direk nesnenin adını(name) yazıyoruz.
Buraya dikkat etmenizi istiyorum. Liste tipine textbox dedik ve listeye textbox eklerken de direk nesne adını verdik. Yani text özelliğini felan vermedik. Direk nesnenin kendisini verdik. Şimdi bu işin güzel yani şu;
TextBox tipindeki listeye bir TextBox ekledik. Peki bu TextBox’un özelliklerini nasıl kullanacağız?
List<TextBox> YeniListem = new List<TextBox>(); //yeni bir liste oluşturduk ve içerisine string türünden atama yapacağımızı belirttik YeniListem.Add(txt_KullaniciAdi); // .Text felan yazmıyoruız. Direk nesnenin adını(name) yazıyoruz. MessageBox.Show(YeniListem[0].Text); //Listemizin 0. index'inde yer alan TextBox'un text'i ni mesaj olarak gösterdik.
Yukarıdaki örnekte gördüğünüz gibi kullanımı da gayet basit. Burada önemli olan listede index sırası. Yani hangi textbox hangi sırada. Ve biliyorsunuz ki Programlama da sıra (0 – Sıfır)’ dan başlar. Yani ilk sıra her zaman (0 – Sıfır)’ dır.
Unutmadan yukarıda Listelerin de listesini yapabileceğimiz söylemiştim. Kullanılacak bir yöntem olduğunu da hiç sanmıyorum ama yinede kullanmak isteyebilirsiniz. :)
List<string> Liste1 = new List<string>(); Liste1.Add("Mustafa"); List<string> Liste2 = new List<string>(); Liste2.Add("Ali"); List<string> Liste3 = new List<string>(); Liste3.Add("Veli"); List<string> Liste4 = new List<string>(); Liste4.Add("Salih"); List<string> Liste5 = new List<string>(); Liste5.Add("Mehmet"); List<string> Liste6 = new List<string>(); Liste6.Add("Arif"); List<List<string>> ListelerListesi = new List<List<string>>(); ListelerListesi.Add(Liste1); ListelerListesi.Add(Liste2); ListelerListesi.Add(Liste3); ListelerListesi.Add(Liste4); ListelerListesi.Add(Liste5); ListelerListesi.Add(Liste6); int i = ListelerListesi.IndexOf(Liste1);
Burada ana listemizin türü string türünde listeler olduğundan bu listeye int türünde bir liste ekleyemezsiniz. Ana listeye eklenecek tüm diğer listeler de string türünde liste olması gerekmektedir. Ayrıca yukarıda anlattığımız IndexOf metodunu Ana liste üzerinden alt listelerdeki elemanlar için kullanamazsınız. Ana liste üzerinden alt listelerin index sırasını bulabilirsiniz.
C# Boş Geçilemez Alanlar Nasıl Yapılır? yazımdaki aynı senaryo üzerinden bir örnek verelim.
Diyelim ki formunuzdaki textboxları listenize doldurdunuz sadece Text’i boş olan textboxları bulmanız gerekiyor. Bunun için List<TextBox> u kullanmanız gerekir. Yukarıda anlattığımız örneği basit olarak yapacak olursak;
List<TextBox> TextBoxlarim = new List<TextBox>(); // Textboxları listeye ekledik. for(int i =0; i<TextBoxlarim.Count; i++ ) { if(TextBoxlarim[i].Text == "" || TextBoxlarim[i].Text == String.Empty) MessageBox.Show(TextBoxlarim.Name + " Adlı TextBox Boştur."); }
Bu şekilde de boş olanları kullanabiliriz. Ancak bu şekilde yaparsak ekstra iş yapmış oluruz. Bu örneği sadece C Sharp List Sınıfı kullanımına örnek olması için verdim. Program yazmaya devam ettikçe kullanmanız gereken yerler illaki olacaktır. Buna benzer olarka ArrayList konusu da var ancak o biraz daha farklı o yüzden ArrayList konusunu başka bir yazıca inceleyeceğiz.
C# List<T> Nasıl Kullanılır? yazımızda bu kadar dostlar. Mümkün mertebe ayrıntılı bir şekilde anlatmaya çalıştım. Diğer derslerimizde görüşmek üzere.
C# List<T> hakkında en ayrıntılı yazıya buradan ulaşabilirsiniz.
C# Hakkındaki diğer derslerim için tıklayabilirsiniz.
Sağlıcakla ve takipte kalın. ;)