Altbilgi içeriğine atla
Iron Academy Logo
C# Öğrenin
C# Öğrenin

Diğer Kategoriler

C# Listesine Giriş

Layla Porter
14m 6s

C#'teki List sınıfı, çok yönlü bir koleksiyon türüdür. İç veri yapısı olarak dinamik bir diziye dayalı olup, elemanların verimli bir şekilde manipülasyonunu sağlar. Bir List oluşturduğunuzda, belleği başlangıçtan optimize etmek için varsayılan bir başlangıç kapasitesini belirleyebilirsiniz. Bu kapasite, listenin bellek tahsisi yapmadan başlangıçta tutabileceği eleman sayısıdır.

Layla Porter'ın "C# for Beginners Part 7 - Querying Data with LINQ" videosunda, C# listelerinin işlevselliğine derinlemesine giriyor ve LINQ (Dil Entegre Sorgusu) kullanarak verilerin nasıl etkin bir şekilde sorgulanacağını gösteriyor. Bu makale, Layla'nın videosundan temel kavramları ve örnekleri detaylandırarak, yeni başlayanlar için C# listeleri hakkında kapsamlı bir anlayış sunuyor.

C# Listelerine Giriş

Layla'nın videosunun başında (0:03) belirttiği gibi, bir C# listesi, geliştiricilerin bir eleman koleksiyonu saklamasına ve manipüle etmesine olanak tanıyan çok yönlü bir veri yapısıdır. Dizilerin aksine, listeler dinamik olarak yeniden boyutlandırılabilir, bu da eleman sayısının önceden bilinmediği senaryolar için idealdir.

Bir Liste kullanmak basittir. İçine eleman eklemek için Add metodunu kullanabilirsiniz, bu metot belirtilen nesneyi listenin sonuna ekler. Liste, sıfır tabanlı bir indeks kullanır, yani ilk eleman indeks 0'dan erişilir. Kare parantezler ([]) kullanarak belirtilen bir indeksle de elemanlara erişebilirsiniz.

Listeyi dolaşmak için kullanılabilecek bir foreach döngüsü vardır, bu döngü, elemanlar göründükleri sırayla her elemanı iter. Belirli bir elemanın ilk meydana gelişini bulmanız gerekirse, belirtilen bir koşula dayalı olarak arama yapan IndexOf gibi metotları kullanabilirsiniz.

Liste, belirli bir türde (T) nesneler barındırdığı anlamına gelen güçlü bir şekilde türlendirilmiştir. Bu, tür güvenliğini sağlar ve belirtilen nesne türü tarafından tanımlanan yöntemlerin ve özelliklerin kullanılmasını etkinleştirir. Varsayılan olarak, Liste öğeleri verimli bir şekilde düzenlemek için varsayılan bir hash fonksiyonu kullanır.

Layla'nın videosunda gösterildiği gibi, Liste ve Liste sınıfı yöntemlerinin çalışmasına derinlemesine bir göz atalım.

Bir Liste Oluşturma

C#'da bir liste oluştururken, iç veri yapısını optimize etmek için belirli bir başlangıç kapasitesi ayarlayabilirsiniz. Listeler esnektir ve belirli bir eleman koleksiyonundan başlatılabilir. Bir int dizin kullanarak öğelere erişebilir ve bir foreach döngüsü ile bunlar arasında dolaşabilirsiniz. Sözlüklerden farklı olarak, listeler varsayılan bir hash fonksiyonuna dayanmaz ve verilerinizi yönetmede tür güvenliği ve tutarlılık sağlayan güçlü bir şekilde türlendirilmiş nesneler saklar.

Layla, (0:44) zamanında peynirlerden oluşan bir liste oluşturur, bir listenin nasıl başlatılacağını ve doldurulacağını açıklar. C#'da, liste List sınıfı kullanılarak oluşturulabilir, burada T listedeki elemanların türünü temsil eder.

List<Cheese> cheeseList = new List<Cheese>
{
    new Cheese(1, "Stilton", 3.0m, 5),
    new Cheese(2, "Cheddar", 2.25m, 3),
    new Cheese(3, "Pineapple", 3.5m, 1),
    new Cheese(4, "Brie", 5.5m, 2),
    new Cheese(5, "Roquefort", 3.5m, 5),
};
List<Cheese> cheeseList = new List<Cheese>
{
    new Cheese(1, "Stilton", 3.0m, 5),
    new Cheese(2, "Cheddar", 2.25m, 3),
    new Cheese(3, "Pineapple", 3.5m, 1),
    new Cheese(4, "Brie", 5.5m, 2),
    new Cheese(5, "Roquefort", 3.5m, 5),
};

Yukarıdaki örnekte, Layla List<Cheese> yi toplama başlangıç sözdizimini kullanarak tanımlar ve Cheese nesneleri ile listeyi doldurarak oluşturur. C#'da bir listenin oluşturulması ve başlatılmasını göstererek, her peynir nesnesi için ID, isim, fiyat ve güç gibi özellikleri belirtiyor.

Peynir Listesini Gezinerek ID ve İsmi Yazdırma

Layla Porter, cheeseList yi dolaşmak ve her peynirin yalnızca Kimlik ve İsim'ini yazdırmak için bir foreach döngüsünün nasıl kullanılacağını gösteriyor. Aşağıda kod ve açıklaması verilmiştir:

foreach (var cheese in cheeseList)
{
    Console.WriteLine($"ID: {cheese.ID}, Name: {cheese.Name}");
}
foreach (var cheese in cheeseList)
{
    Console.WriteLine($"ID: {cheese.ID}, Name: {cheese.Name}");
}

Yukarıdaki kodda, Layla cheeseList yi dolaşmak için bir foreach döngüsü kullanıyor. Bu, listenin tüm elemanlarını yazdırıyor. Döngü, listedeki her Cheese nesnesini iter. Her döngüde, değişken cheese belirtilen indeksdeki mevcut Cheese nesnesini tutar. Console.WriteLine kullanarak, her peynir elemanının Kimlik ve İsim özelliklerini yazdırır, böylece C# dilinde bir listeden belirli elemanlara nasıl erişileceğini ve görüntüleneceğini gösterir.

LINQ Sorgusu Kullanarak Peynir Arama

2:45'ta, Layla Porter kullanıcı girdisine dayalı olarak belirli bir peyniri nasıl arayacağını gösterir. Peynir ismini kullanıcıdan almak için ReadLine metodunu kullanıyor:

string cheeseName = Console.ReadLine();
string cheeseName = Console.ReadLine();

Listede bir öğe aranırken, Layla 2:51'de çok önemli bir ana noktayı vurguluyor. LINQ kullanmasaydık, kullanıcı girdisine uyan bir adı bulmak için koleksiyonumuzdaki her peyniri manuel olarak döngüye almak zorunda kalacağımızı, ancak LINQ'nun yardımcı kitaplıklarının bu işlemi arka planda hallettiğini ve süreci çok verimli hale getirdiğini söylüyor. Aşağıdaki kod parçası, Layla'nın (3:40) bir for döngüsü kullanmadan yalnızca LINQ sorgu sözdizimini kullanarak listeyi nasıl dolaştığını göstermektedir:

if (cheeseList.Any(cheese => cheese.Name == cheeseName))
{
    Cheese cheese = cheeseList.FirstOrDefault(c => c.Name == cheeseName);

    Console.WriteLine($"{cheese.Name} cheese costs £{cheese.Price.ToString()} and has a strength of {cheese.Strength}.");
}
else
{
    Console.WriteLine("I'm sorry, we don't have that cheese.");
}
if (cheeseList.Any(cheese => cheese.Name == cheeseName))
{
    Cheese cheese = cheeseList.FirstOrDefault(c => c.Name == cheeseName);

    Console.WriteLine($"{cheese.Name} cheese costs £{cheese.Price.ToString()} and has a strength of {cheese.Strength}.");
}
else
{
    Console.WriteLine("I'm sorry, we don't have that cheese.");
}

Yukarıdaki kodda:

  • Layla, listeyi manuel olarak döngüye almak yerine, daha verimli bir arama için LINQ kullanabileceğimizi açıklıyor. Any metodu, listedeki peynirlerden herhangi birinin kullanıcı tarafından girilen isimle eşleşip eşleşmediğini kontrol eder.

  • Bir eşleşme bulunursa, bu elemanın var olduğu anlamına gelir; FirstOrDefault metodu, girilen isimle eşleşen ilk peyniryi alır. Bu yöntem, bir eşleşme bulunmazsa null döndürerek potansiyel hataları önlediği için güvenlidir.

  • Eğer peynir bulunursa, İsmi, Fiyatı ve Gücü yazdırılır. Bulunmazsa, peynire ulaşamadığımızı belirten bir mesaj gösterilir.

Bu yaklaşım, C#'da koleksiyonları aramak için LINQ kullanmanın etkinliğini ve basitliğini sergilemektedir. Kod parçasının çıktısı 7:19'da gösterilmektedir: (Aşağıdaki görüntüden daha iyi bir görüntü mümkün mü?)

Örnek Çıktı

Arama Sırasında Büyük Küçük Harfe Duyarlılığı Yönetme

Layla, 8:00'da, stringlerle çalışırken, önemli olan şeylerin büyük/küçük harfe duyarlı olduğunu hatırlatıyor. Peynir adı karşılaştırmalarımızın büyük/küçük harf duyarsız olmasını sağlamak için hem kullanıcının girdiğini hem de listemizdeki peynir adlarını kullanılacak .ToLower() metodu ile küçük harfe dönüştürmemiz gerekiyor. Bu, kullanıcının herhangi bir türde büyük/küçük harf kullanmasına olanak tanır ve kodumuz yine de doğru peyniri bulur. Dizelerin büyük/küçük harf duyarlılığı can sıkıcı olabilir, bu yüzden doğru şekilde ele almak önemlidir.

Pratik Örnek: Peynirleri Güce Göre Sorgulama

8:50'de, Layla, kullanıcının peynirleri güçlerine göre filtreleyebileceği pratik bir örnek oluşturur, kullanıcı girdilerini LINQ sorguları ile birleştirmenin nasıl yapılacağını gösterir.

1. Kullanıcı Girdisi İstemi ve Okuma

Console.WriteLine("What strength cheese are you interested in - choose between 1 and 5");
string strengthString = Console.ReadLine();
Console.WriteLine("What strength cheese are you interested in - choose between 1 and 5");
string strengthString = Console.ReadLine();

Layla, 9:05'ta, kullanıcıdan 1 ile 5 arasında bir güç değeri seçmesini ister. Bu, basit bir Console.WriteLine ile girdi istemek ve ardından onların yazdığı alanı yakalamak için Console.ReadLine() ile yapılır.

2. Girdiyi Tam Sayıya Dönüştürme

bool isInt = int.TryParse(strengthString, out int strength);
bool isInt = int.TryParse(strengthString, out int strength);

Ardından, 9:16'da, girdinin gerçek bir sayı olduğundan emin olur. Bunun için int.TryParse kullanımını öneriyor. Girdi kontrol edilip başarılı bir şekilde tam sayıya dönüştürüldüğünde, harika! Aksi takdirde, bunu zarif bir şekilde ele alabiliriz.

3. Peynirleri Güce Göre Filtreleme

List<Cheese> cheeseByStrength = cheeseList.Where(c => c.Strength == strength).ToList();
List<Cheese> cheeseByStrength = cheeseList.Where(c => c.Strength == strength).ToList();

Layla'nın 10:25'teki videosunun eğlenceli kısmı şimdi geliyor. Burada, peynir listemizi, yani cheeseList 'yi LINQ kullanarak nasıl filtreleyeceğimizi gösteriyor. LINQ'nin Where metodu ve hızlı bir lambda ifadeyle (c => c.Strength == strength), kullanıcının seçtiği güç değerine uygun peynirleri ayıklar. Bu, bize yeni bir liste, cheeseByStrength, verir.

4. Filtrelenmiş Peynirleri Çıktı Olarak Verme

foreach (var cheese in cheeseByStrength)
{
    Console.WriteLine($"Name: {cheese.Name} cheese");
}
foreach (var cheese in cheeseByStrength)
{
    Console.WriteLine($"Name: {cheese.Name} cheese");
}

Son olarak, 12:03'te, her şeyi güzelce toparlamak için Layla, o listedeki cheeseByStrength ile bir foreach döngüsü kurar. O listedeki her peynir için Console.WriteLine yönteminde belirtilen predicate ile adını yazdırır. Basit ve etkili!

Programı 12:17'de çalıştırdığında, Layla, kullanıcıdaki güç değerini nasıl girileceğini ve listenin belirtilen güçteki peynirleri göstermek için nasıl filtrelendiğini gösterir. Örnek çıktı aşağıda gösterilmektedir: (Daha iyi bir görüntü mümkün mü?)

Örnek Çıktı

Sonuç

Layla'nın videosu, C# listelerini ve bunları LINQ kullanarak nasıl sorgulayacağınızı etkili bir şekilde tanıtır. Örneklerini ve açıklamalarını takip ederek, yeni başlayanlar C#'da listelerle çalışma ve verileri sorgulama konusunda sağlam bir temel kazanabilir. Daha fazla ayrıntı ve canlı kodlama oturumları için Layla'nın YouTube kanalını ziyaret edin ve canlı yayınlarına katılın.

Listenin efektif olarak manipüle edilmesi ve anlaşılması için, List sınıfının Count özelliği, Insert metodu, predicate fonksiyonları ve daha fazlası gibi çeşitli metotlarını ve özelliklerini keşfetmeyi unutmayın.

Hero Worlddot related to C# Listesine Giriş
Hero Affiliate related to C# Listesine Giriş

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js üzerinde çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara