Somutlaştırma (ToList, ToDictionary) ve performans notları
Ertelenmiş sorguları ToList/ToArray/ToDictionary ile somut koleksiyonlara dönüştürün; yinelemeli sıralamadan kaçının ve anahtarların benzersiz olması kurallarını öğrenin.
Somutlaştırma (ToList, ToDictionary) ve performans notları, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.
Neden somutlaştırma yapılır
Ertelenen sorgular, her numaralandırıldıklarında çalışır.
- Anlık görüntü almak için somutlaştırın
- Maliyetli sorguların birden çok kez yeniden çalıştırılmasını önleyin
- İhtiyaca göre List, Array veya Dictionary seçin
ToList / ToArray
ToList/ToArray sorguyu bir kez çalıştırıp sonuçları saklar; kaynakta daha sonra yapılan değişiklikler yansıtılmaz.
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
List<int> data = new List<int>(new int[] { 1, 2, 3, 4 });
var evensQuery = data.Where(x => x % 2 == 0);
int[] evensArray = evensQuery.ToArray(); // snapshot now
List<int> evensList = evensQuery.ToList(); // snapshot now
data.Add(6); // changes after materialization
Console.WriteLine("Array:");
foreach (int x in evensArray) Console.WriteLine(x); // 2,4
Console.WriteLine("List:");
foreach (int x in evensList) Console.WriteLine(x); // 2,4
}
}
ToDictionary temelleri
ToDictionary, sonuçları bir Dictionary<K,V> içinde somutlaştırır. Anahtarlar benzersiz olmalıdır; aksi hâlde hata fırlatır.
using System;
using System.Collections.Generic;
using System.Linq;
public sealed class City
{
public string Name;
public int Population;
public City(string name, int pop){ Name = name; Population = pop; }
}
public class Program
{
public static void Main(string[] args)
{
var cities = new City[]
{
new City("Oslo", 634000),
new City("Rome", 2873000),
new City("Riga", 605000)
};
Dictionary<string, int> byName = cities
.ToDictionary(c => c.Name, c => c.Population);
Console.WriteLine(byName["Rome"]); // 2873000
}
}
Yinelenen anahtarlar: ToLookup/GroupBy
Anahtarlar yinelenebiliyorsa ToDictionary yerine çok değerli sözlük olan ToLookup'u veya GroupBy'ı tercih edin.
using System;
using System.Collections.Generic;
using System.Linq;
public sealed class Item { public string Category; public string Name; public Item(string c, string n){ Category=c; Name=n; } }
public class Program
{
public static void Main(string[] args)
{
var items = new Item[]
{
new Item("Food","Apple"),
new Item("Food","Bread"),
new Item("Tool","Hammer"),
new Item("Tool","Wrench")
};
// If keys may repeat, use ToLookup (multi-value) or GroupBy
var lookup = items.ToLookup(i => i.Category, i => i.Name);
foreach (var g in lookup)
{
Console.WriteLine(g.Key + ":");
foreach (var name in g) Console.WriteLine(" - " + name);
}
}
}
Birden çok numaralandırmadan kaçınma
Her numaralandırma yapılan işi yeniden çalıştırabilir. Birden çok kez yineleme yapacaksanız bir kez somutlaştırın (örneğin ToList ile).
using System;
using System.Collections.Generic;
using System.Linq;
public static class Expensive
{
public static IEnumerable<int> Numbers()
{
// Simulate expensive enumeration (prints when enumerated)
for (int i = 1; i <= 3; i++)
{
Console.WriteLine("Produce " + i);
yield return i;
}
}
}
public class Program
{
public static void Main(string[] args)
{
var query = Expensive.Numbers().Select(x => x * x);
Console.WriteLine("First pass:");
foreach (int x in query) Console.WriteLine(x);
Console.WriteLine("Second pass (re-enumerates work):");
foreach (int x in query) Console.WriteLine(x);
Console.WriteLine("Cache with ToList:");
List<int> cached = query.ToList(); // runs once
foreach (int x in cached) Console.WriteLine(x); // no extra production logs
}
}
Somutlaştırma kontrol listesi
Kontrol listesi:
- Anlık görüntü almak için ToList/ToArray kullanın.
- Anahtarlar benzersiz olduğunda ToDictionary, aksi hâlde ToLookup/GroupBy kullanın.
- Maliyetli kaynakları birden çok kez numaralandırmaktan kaçının; bir kez önbelleğe alın.
- Öngörülebilir davranış için G/Ç ve veritabanı çağrıları gibi sınırların yakınında somutlaştırın.
ToDictionary gereksinimi
Özet
Özet: Anlık görüntüler için ToList/ToArray ile somutlaştırın, hızlı arama için benzersiz anahtarlarla ToDictionary kullanın ve maliyetli sorguları yeniden çalıştırmamak için önbelleğe alın.
Sıkça Sorulan Sorular
“Somutlaştırma (ToList, ToDictionary) ve performans notları” dersi ücretsiz mi?
Evet — “Somutlaştırma (ToList, ToDictionary) ve performans notları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.
“Somutlaştırma (ToList, ToDictionary) ve performans notları” dersinde ne öğreneceğim?
Ertelenmiş sorguları ToList/ToArray/ToDictionary ile somut koleksiyonlara dönüştürün; yinelemeli sıralamadan kaçının ve anahtarların benzersiz olması kurallarını öğrenin. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.
“Somutlaştırma (ToList, ToDictionary) ve performans notları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- GroupBy, Join, Aggregate ve projeksiyonlar (anonim türler)
- Somutlaştırma (ToList, ToDictionary) ve performans notları
- Birleştirilebilirlik ipuçları