C'de Liste<T'yi> kullanarak veri koleksiyonlarını yönetmeyi öğrenin#
Bu giriş öğreticisi, C# diline ve sınıfın temellerine List<T> giriş sağlar.
Önkoşullar
Öğretici, yerel geliştirme için ayarlanmış bir makineniz olmasını bekler. Yükleme yönergeleri ve .NET'te uygulama geliştirmeye genel bakış için bkz. Yerel ortamınızı ayarlama .
Yerel bir ortam ayarlamak zorunda kalmadan kodu çalıştırmayı tercih ediyorsanız , bu öğreticinin tarayıcı içi etkileşimli sürümüne bakın.
Temel liste örneği
list-tutorial adlı bir dizin oluşturun. Bunu geçerli dizin yapın ve çalıştırın dotnet new console
.
Önemli
.NET 6 için C# şablonları en üst düzey deyimleri kullanır. .NET 6'ya zaten yükselttiyseniz uygulamanız bu makaledeki kodla eşleşmeyebilir. Daha fazla bilgi için Yeni C# şablonları en üst düzey deyimleri oluşturma makalesine bakın
.NET 6 SDK'sı, aşağıdaki SDK'ları kullanan projeler için bir dizi örtükglobal using
yönerge de ekler:
- Microsoft.NET.Sdk
- Microsoft.NET.Sdk.Web
- Microsoft.NET.Sdk.Worker
Bu örtük global using
yönergeler, proje türü için en yaygın ad alanlarını içerir.
Daha fazla bilgi için Örtük kullanım yönergeleri makalesine bakın
Sık kullandığınız düzenleyicide Program.cs dosyasını açın ve mevcut kodu aşağıdakilerle değiştirin:
List<string> names = ["<name>", "Ana", "Felipe"];
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
yerine adınızı yazın <name>
. Program.cs dosyasını kaydedin. Denemek için konsol pencerenize yazın dotnet run
.
Bir dize listesi oluşturdunuz, bu listeye üç ad eklediniz ve adları tüm CAPS'lere yazdırmıştınız. Listede döngü yapmak için önceki öğreticilerde öğrendiğiniz kavramları kullanıyorsunuz.
Adların görüntüleneceği kod , dize ilişkilendirme özelliğini kullanır. karakterinden $
önce gelen string
C# kodunu dize bildirimine ekleyebilirsiniz. Gerçek dize, bu C# kodunun oluşturduğu değerle değiştirir. Bu örnekte, yöntemini çağırdığınız ToUpper için öğesini büyük harflere dönüştürülmüş her adla değiştirir{name.ToUpper()}
.
Keşfetmeye devam edelim.
Liste içeriğini değiştirme
Oluşturduğunuz koleksiyon türünü List<T> kullanır. Bu tür, öğe dizilerini depolar. Köşeli ayraçlar arasındaki öğelerin türünü belirtirsiniz.
Bu List<T> türün önemli yönlerinden biri, öğeleri eklemenize veya kaldırmanıza olanak tanıyarak büyüyebilmesi veya küçülebilmesidir. Bu kodu programınızın sonuna ekleyin:
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Listenin sonuna iki ad daha eklediniz. Ayrıca bir tane de kaldırdınız. Dosyayı kaydedin ve denemek için yazın dotnet run
.
, List<T> tek tek öğelere dizine göre de başvurmanızı sağlar. Dizini, liste adının ardından ve ]
belirteçleri arasına [
yerleştirirsiniz. C# ilk dizin için 0 kullanır. Bu kodu yeni eklediğiniz kodun hemen altına ekleyin ve deneyin:
Console.WriteLine($"My name is {names[0]}");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list");
Listenin sonundan sonra bir dizine erişemezsiniz. Dizinlerin 0'dan başladığını, bu nedenle en büyük geçerli dizinin listedeki öğe sayısından bir az olduğunu unutmayın. Listenin özelliğini ne kadar süreyle kullandığını Count kontrol edebilirsiniz. Programınızın sonuna aşağıdaki kodu ekleyin:
Console.WriteLine($"The list has {names.Count} people in it");
Dosyayı kaydedin ve sonuçları görmek için yeniden yazın dotnet run
.
Listeleri arama ve sıralama
Örneklerimiz görece küçük listeler kullanır, ancak uygulamalarınız genellikle çok daha fazla öğe içeren listeler oluşturabilir ve bazen binler içinde numaralanabilir. Bu daha büyük koleksiyonlardaki öğeleri bulmak için listede farklı öğeler aramanız gerekir. IndexOf yöntemi bir öğeyi arar ve öğenin dizinini döndürür. Öğe listede yoksa döndürür IndexOf
-1
. Bu kodu programınızın en altına ekleyin:
var index = names.IndexOf("Felipe");
if (index == -1)
{
Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
index = names.IndexOf("Not Found");
if (index == -1)
{
Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
Listenizdeki öğeler de sıralanabilir. yöntemi listedeki Sort tüm öğeleri normal düzenlerinde sıralar (dizeler için alfabetik olarak). Bu kodu programınızın en altına ekleyin:
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Bu en son sürümü denemek için dosyayı kaydedin ve yazın dotnet run
.
Sonraki bölüme başlamadan önce geçerli kodu ayrı bir yönteme taşıyalım. Bu, yeni bir örnekle çalışmaya başlamayı kolaylaştırır. Yazdığınız tüm kodu adlı WorkWithStrings()
yeni bir yönteme yerleştirin. Programınızın üst kısmında bu yöntemi çağırın. bitirdiğinizde kodunuz şu şekilde görünmelidir:
WorkWithStrings();
void WorkWithStrings()
{
List<string> names = ["<name>", "Ana", "Felipe"];
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Console.WriteLine($"My name is {names[0]}");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list");
Console.WriteLine($"The list has {names.Count} people in it");
var index = names.IndexOf("Felipe");
if (index == -1)
{
Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
index = names.IndexOf("Not Found");
if (index == -1)
{
Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
}
Diğer türlerin listeleri
Şimdiye kadar listelerde türünü kullanıyordunuz string
. Şimdi farklı bir tür kullanarak oluşturalım List<T> . Şimdi bir sayı kümesi oluşturalım.
çağrısı WorkWithStrings()
yaptıktan sonra aşağıdakileri programınıza ekleyin:
List<int> fibonacciNumbers = [1, 1];
Bu, bir tamsayı listesi oluşturur ve ilk iki tamsayıyı 1 değerine ayarlar. Bunlar bir Fibonacci Dizisinin ilk iki değeridir ve bir sayı dizisidir. Sonraki her Fibonacci sayısı, önceki iki sayının toplamı alınarak bulunur. Şu kodu ekleyin:
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
foreach (var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
Sonuçları görmek için dosyayı kaydedin ve yazın dotnet run
.
İpucu
Yalnızca bu bölüme odaklanmak için çağıran WorkWithStrings();
kodu açıklama satırı yapabilirsiniz. Çağrının önüne şu şekilde iki /
karakter koyun: // WorkWithStrings();
.
Sınama
Bu ve önceki derslerden bazı kavramları bir araya getirip birleştirebileceğinize bakın. Fibonacci Numbers ile şimdiye kadar derlediğiniz şeyi genişletin. Dizideki ilk 20 sayıyı oluşturmak için kodu yazmayı deneyin. (İpucu olarak, 20. Fibonacci sayısı 6765'tir.)
Görevi tamamlama
GitHub'daki tamamlanmış örnek koda bakarak örnek bir çözüm görebilirsiniz.
Döngünün her yinelemesiyle, listedeki son iki tamsayıyı alır, bunları toplar ve bu değeri listeye eklersiniz. Döngü, listeye 20 öğe ekleyene kadar yineleniyor.
Tebrikler, liste öğreticisini tamamladınız. Kendi geliştirme ortamınızda ek öğreticilerle devam edebilirsiniz.
Koleksiyonlarla ilgili .NET temelleri makalesinde türüyle List
çalışma hakkında daha fazla bilgi edinebilirsiniz. Ayrıca diğer birçok koleksiyon türü hakkında da bilgi edineceksiniz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin