# List 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.

```
List<int> sayilar = new List<int>();
```

#### List Nesnesine Değer Ekleme

```
 //int
List<int> sayilar = new List<int>();
sayilar.Add(12);
sayilar.Add(42);
sayilar.Add(32);
sayilar.Add(89);

 //string
 
List<string> isimler = new List<string>();
isimler.Add("Ali");
isimler.Add("Ahmet");
isimler.Add("Mehmet"); 

```

#### List Nesnesinin Uzunluğunu Alma

```
isimler.Count;
```

#### List Nesnesinin Değerlerini Okuma (Foreach)

```
foreach (string isim in isimler)
{
MessageBox.Show(isim);
}
```

#### List Nesnesindeki Değerleri Okuma (For)

```
int toplam=0; 
for (int i = 0; i < sayilar.Count; i++)
{
toplam+=sayilar[i];
}
MessageBox.Show(sayilar);
```

#### 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.

```
isimler.Remove("Mehmet");
 
sayilar.Remove(42);
```

#### List Nesnesinden Index Numarası ile Değer Çıkarma

**RemoveAt** silinecek **index** numarasını parametre olarak alır.

```
 isimler.RemoveAt(2); // index sırası 2 olan değeri siler.
 
 isimler.RemoveAt(0); // ilk sıradaki değeri siler.
```

#### List İçinde Arama

**List.Contains()** metodunu kullanarak bir nesnenin listede olup olmadığını kontrol ettirebilirsiniz.

```
if (isimler.Contains("Ahmet"))
{
MessageBox.Show("Ahmet bu listede mevcuttur.");
}
```

&#x20;**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.

```
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
```

#### Diziyi Listeye Çevirme

```

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 ();

### List Nesnesine Nesne Ekleme

&#x20;Aşağıdaki şekilde **Kisi** adında oluşturduğumuz sınıfı  oluşturduğumuz liste nesnesine ekleyelim.

```
public 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**

```
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**

```
List<Kisi> Kisiler= new List< Kisi>();
{  
new Kisi { Ad = "Mehmet", Soyad = "Özdemir"},
new Kisi { Ad = "İrem", Soyad = "Kesici"}
};
```

#### Listeyi Ekrana Yazdırma

```
foreach (Kisi kisi in Kisiler)
{
Console.Write(kisi.Ad);
Console.WriteLine(kisi.Soyad);
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mehmetozdemir.gitbook.io/oop/list-nedir.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
