List < T > Class Nedir
Koleksiyon sınıfları özel tasarlanmış nesneleri ve onlara ait olan görevleri yerine getirmek için oluşturulmuş olan nesnelerdir. List Class System.Collections.Generic isim uzayı içinde tanımlanmış metodlar, özellikler ve diğer sınıflarda olduğu gibi insert, remove, search vb. nesneleri barındırmaktadır. List class diziler(array) ve veri yapıları (data structure) nesneleri yerine kullanılır. List sınıfları kullanıldığında dizi üzerindeki boyutundaki esneklik yanı sıra ek özellikleri de kolaylık sağlamaktadır.
C# List < T > sınıfı nesnelerin türünü oluşturulduğunda belirtme zorunluluğu göstermektedir.
List < T > Kullanımı
T parametresi listedeki nesnelerin türünü ifade etmektedir.
1 2 3 |
List<int> sayilar = new List<int>(); |
List Nesnesine Değer Ekleme
1 2 3 4 5 6 7 |
List<int> sayilar = new List<int>(); sayilar.Add(12); sayilar.Add(42); sayilar.Add(32); sayilar.Add(89); |
1 2 3 4 5 6 |
List<string> isimler = new List<string>(); isimler.Add("Ali"); isimler.Add("Ahmet"); isimler.Add("Mehmet"); |
List Nesnesinin Uzunluğunu Alma
1 2 3 |
isimler.Count; |
List Nesnesinin Değerlerini Okuma (foreach)
C# List içindeki verileri yazdırmak için aşağıdaki iki döngüden biri kullanılarak değerleri ekrana yazdırma işlemi yapılabilir.
1 2 3 4 5 6 |
foreach (string isim in isimler) { MessageBox.Show(isim); } |
List Nesnesindeki Değerleri Okuma (for)
1 2 3 4 5 6 7 8 |
int toplam=0; for (int i = 0; i < sayilar.Count; i++) { toplam+=sayilar[i]; } MessageBox.Show(sayilar); |
C# List.ForEach Methodu ile Değerleri Okuma
List.ForEach işlevi liste içindeki her öge için belirtilen işlevi uygular. foreach ifadesi ile aynı görevi görmektedir.
1 2 3 4 5 6 7 8 |
List<string> isimler = new List<string>(); isimler.Add("Ali"); isimler.Add("Ahmet"); isimler.Add("Mehmet"); isimler.Add("Kemal"); isimler.ForEach(isim => Console.WriteLine(isim)); |
List Nesnesinden Değer Çıkarma
Remove Silinmesini istenilen değeri siler. Silinecek değer liste içinde birden fazla olması durumunda ilk değeri kaldırır. Bu metodu genellikle referans tipler ile değer çıkarmak için kullanılır. Fakat değer tipleri ile de kullanılabilir.
1 2 3 4 5 |
isimler.Remove("Mehmet"); sayilar.Remove(42); |
List Nesnesinden Index Numarası ile Değer Çıkarma
RemoveAt silinecek index numarasını parametre olarak alır.
1 2 3 4 5 |
isimler.RemoveAt(2); // index sırası 2 olan değeri siler. isimler.RemoveAt(0); // ilk sıradaki değeri siler. |
C# List İçinde Arama
List.Contains() metodunu kullanarak bir nesnenin listede olup olmadığını kontrol ettirebilirsiniz.
1 2 3 4 5 6 |
if (isimler.Contains("Ahmet")) { MessageBox.Show("Ahmet bu listede mevcuttur."); } |
BinarySearch metodu, kendisine verilen değerin listede kaçıncı sırada olduğunu döndürür. Aranan değer liste içinde yoksa negatif bir değer döndürür.
1 2 3 4 5 6 7 8 9 10 |
List<string> isimler = new List<string>(); isimler.Add("Ali"); isimler.Add("Ahmet"); isimler.Add("Mehmet"); isimler.Add("Kemal"); int aranaIndex = isimler.BinarySearch("Ahmet"); //arananIndex:1 int aranaIndex2 = isimler.BinarySearch("Yusuf"); // negatif değer |
C# Diziyi Listeye Çevirme
1 2 3 4 5 6 7 8 9 |
string[] dizi = new string[3]; dizi[0] = "Ayşe"; dizi[1] = "Fatma"; dizi[2] = "Pakize"; //diziyi listeye aşağıdaki gibi çevirebilirsiniz. List<string> isimler = new List<string>(dizi); |
List Nesnesini Boşaltma
isimler.Clear ();
C# List Nesnesine Nesne Ekleme
Aşağıdaki şekilde Kisi adında oluşturduğumuz sınıfı oluşturduğumuz liste nesnesine ekleyelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
class Kisi { string ad; string soyad; public string Ad { get { return ad; } set { ad = value; } } public string Soyad { get { return soyad; } set { soyad = value; } } } |
Kisi sınıfını kullanan List Örneği
Yöntem 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
List<Kisi> Kisiler= new List< Kisi>(); Kisi kisi1= new Kisi(); Kisi kisi2= new Kisi (); kisi1.Ad = "Zeytin"; kisi1.Soyad="Bakar"; kisi2.Ad = "Işıl"; kisi2.Soyad = "Gezer"; Kisiler.Add(kisi1); Kisiler.Add(kisi2); |
Yöntem 2
1 2 3 4 5 6 7 8 9 10 |
List<Kisi> Kisiler= new List< Kisi>(); Kisimler.Add(new Kisi() { Ad="Yavuz", Soyad="Nereden", }); |
Listeyi Ekrana Yazdırma
1 2 3 4 5 6 7 |
foreach (Kisi kisi in Kisiler) { Console.Write(kisi.Ad); Console.WriteLine(kisi.Soyad); } |
C# List Kullanımı ile İlgili Örnek
1-49 arasındaki sayılar bir listeye aktarıyoruz. for döndüğü içinde sırasıyla bir değer seçip, değeri listeden çıkarıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
List<int> sayilar = new List<int>(); for(int i=1;i<=49; i++) { sayilar.Add(i); } for(int x=1;x<=6;x++) { System.Threading.Thread.Sleep(1000); //Seçimler arası 1sn bekleme süresi Random rnd = new Random(); int index = rnd.Next(0, sayilar.Count); Console.WriteLine(sayilar[index]); sayilar.RemoveAt(index); } Console.ReadLine(); |
List dizisini mssql veritabanına varbinary(MAX) olarakmı ekliyoruz c# da bunu nasıl yapacağız ?
Bu sitelerin artik cok sik güncellenemiyor olmasi üzücü.
Bu konu ile alakali birsey soracagim izninizle.
Diyelim :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace containsdenemeler
{
public partial class Form1 : Form
{
public int sira;
public string isim;
public int yas;
public List Kisiler = new List();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
isim = textBox1.Text;
//—– 1.durum, ayni nesnenin olup olmadiiginin kontrol edilmedigi direk eklendigi
//Kisiler.Add(new Kisi(isim, Convert.ToInt16(textBox2.Text)));
//————————————-
//2.durum contains ile kontrol (ama ali 20 gir mesela ayni nesne ekleniyor
if (!Kisiler.Contains(new Kisi(isim, Convert.ToInt16(textBox2.Text)))) ;
{
Kisiler.Add(new Kisi(isim, Convert.ToInt16(textBox2.Text)));
}
//———————————————
Listele();
}
void Listele()
{
listBox1.Items.Clear();
foreach (var liste in Kisiler)
{
listBox1.Items.Add(” Isim :” + liste.isim + ” Yas :” + liste.yas);
}
}
}
}
sinifin icinde de
namespace containsdenemeler
{
public class Kisi
{
public string isim;
public int yas;
public Kisi (string isimtemp, int yastemp )
{
this.isim = isimtemp;
this.yas = yastemp;
}
}
}
Burada Contains in calismamasinin sebebi nedir?
Tesekkür ederim.