Nesne ve Koleksiyon Başlatıcıları
Özellikleri oluşturma sırasında kısa biçimde ayarlayın.
Nesne ve Koleksiyon Başlatıcıları, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 3. 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 4 dersten oluşur.
Nesne Başlatıcısı Nedir
Bir nesne başlatıcısı, her birleşim için bir oluşturucu yazmadan, new işleminden hemen sonra { } içinde genel erişimli özellikleri veya alanları ayarlar.
using System;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var p = new Person { Name = "Ada", Age = 36 };
Console.WriteLine(p.Name + ", " + p.Age);
}
}Başlatıcı Sözdizimi
Özellik atamalarını süslü ayraçların içinde virgüllerle ayırarak listeleyin. Bunlar oluşturucu tamamlandıktan sonra çalışır.
using System;
class Car
{
public string Make { get; set; }
public string Model { get; set; }
public int Year { get; set; }
}
class Program
{
static void Main()
{
var car = new Car
{
Make = "Toyota",
Model = "Corolla",
Year = 2022
};
Console.WriteLine(car.Year + " " + car.Make + " " + car.Model);
}
}Oluşturucu ile Başlatıcıyı Birleştirme
Bir oluşturucuyu çağırabilir AND bir başlatıcı kullanabilirsiniz. Önce oluşturucu çalışır, ardından başlatıcı listelenen özelliklere değer atar.
using System;
class Widget
{
public string Id { get; }
public string Label { get; set; }
public Widget(string id) { Id = id; }
}
class Program
{
static void Main()
{
var w = new Widget("w1") { Label = "Submit" };
Console.WriteLine(w.Id + ": " + w.Label);
}
}Yalnızca Bazı Özellikleri Başlatma
Yalnızca önem verdiğiniz özellikleri listelersiniz; diğerleri varsayılan değerlerini korur. Bu, başlatıcıları esnek hâle getirir.
using System;
class Settings
{
public bool DarkMode { get; set; } = false;
public int Volume { get; set; } = 50;
public string Lang { get; set; } = "en";
}
class Program
{
static void Main()
{
var s = new Settings { DarkMode = true };
Console.WriteLine(s.DarkMode + ", " + s.Volume + ", " + s.Lang);
}
}Koleksiyon Başlatıcıları
Bir koleksiyon başlatıcısı, oluşturma sırasında virgülle ayrılmış öğeler içeren { } kullanarak bir listeyi, kümeyi veya diziyi doldurur.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var nums = new List<int> { 1, 2, 3, 4, 5 };
Console.WriteLine("Count: " + nums.Count);
Console.WriteLine("Sum: " + Sum(nums));
}
static int Sum(List<int> list)
{
int t = 0;
foreach (var n in list) t += n;
return t;
}
}Koleksiyon Başlatıcıları Nasıl Çalışır
Derleyici, her öğeyi bir Add(...) çağrısına dönüştürür. Add yöntemine sahip olan ve IEnumerable destekleyen her tür bu sözdizimini kullanabilir.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var names = new List<string> { "Ann", "Bob", "Cara" };
foreach (var n in names)
Console.WriteLine(n);
}
}Sözlük Başlatıcıları
Sözlükler, arama tabloları için oldukça kullanışlı olan anahtar/değer çiftleriyle süslü ayraçların içinde başlatılabilir.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var ages = new Dictionary<string, int>
{
["Ann"] = 30,
["Bob"] = 25
};
Console.WriteLine("Ann is " + ages["Ann"]);
}
}İç İçe Nesne Başlatıcıları
Bir nesne başlatıcısı, iç içe nesneleri başlatarak tek bir ifade içinde küçük bir nesne grafiği oluşturabilir.
using System;
class Address
{
public string City { get; set; }
}
class Customer
{
public string Name { get; set; }
public Address Home { get; set; } = new Address();
}
class Program
{
static void Main()
{
var c = new Customer
{
Name = "Lin",
Home = new Address { City = "Tokyo" }
};
Console.WriteLine(c.Name + " in " + c.Home.City);
}
}Nesne Koleksiyonları
Her iki özelliği birleştirin: öğeleri kendileri de nesne başlatıcılarıyla oluşturulan bir liste başlatın.
using System;
using System.Collections.Generic;
class Item
{
public string Name { get; set; }
public decimal Price { get; set; }
}
class Program
{
static void Main()
{
var cart = new List<Item>
{
new Item { Name = "Pen", Price = 1.5m },
new Item { Name = "Book", Price = 9.0m }
};
decimal total = 0;
foreach (var i in cart) total += i.Price;
Console.WriteLine("Total: " + total);
}
}Başlatıcılar ve Başlatma Özellikleri
Nesne başlatıcıları, yalnızca init ile ayarlanabilen özellikleri belirlemenin yoludur; çünkü bu özelliklere yalnızca başlatma sırasında değer atanabilir.
using System;
class Config
{
public string Env { get; init; }
public int Retries { get; init; }
}
class Program
{
static void Main()
{
var c = new Config { Env = "prod", Retries = 3 };
Console.WriteLine(c.Env + " / " + c.Retries);
}
}Hepsini Birleştirme
Başlatıcılar, özellikle yapılandırma nesneleri ve sınama verileri için oluşturma işlemini bildirime dayalı ve okunabilir hâle getirir.
using System;
using System.Collections.Generic;
class Team
{
public string Name { get; set; }
public List<string> Members { get; set; } = new List<string>();
}
class Program
{
static void Main()
{
var t = new Team
{
Name = "Alpha",
Members = { "Ann", "Bob", "Cara" }
};
Console.WriteLine(t.Name + " has " + t.Members.Count + " members");
}
}Hızlı Kontrol
Başlatıcılar hakkındaki anlayışınızı sınayın.
Özet
Nesne başlatıcıları, new işleminden sonra { } içinde genel erişimli üyelere değer atar ve oluşturucudan sonra çalışır. Koleksiyon başlatıcıları, örtük Add çağrılarıyla öğeler ekler; sözlükler de anahtar/değer çiftlerini destekler. Her ikisi de iç içe kullanılabilir, init özellikleriyle çalışır ve oluşturma işlemini kısa ve bildirime dayalı hâle getirir.
using System;
using System.Collections.Generic;
class Demo
{
public string Name { get; set; }
public List<int> Nums { get; set; } = new List<int>();
}
class Program
{
static void Main()
{
var d = new Demo { Name = "x", Nums = { 1, 2, 3 } };
Console.WriteLine(d.Name + " " + d.Nums.Count);
}
}Sıkça Sorulan Sorular
“Nesne ve Koleksiyon Başlatıcıları” dersi ücretsiz mi?
Evet — “Nesne ve Koleksiyon Başlatıcıları” 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 4 dersten oluşur.
“Nesne ve Koleksiyon Başlatıcıları” dersinde ne öğreneceğim?
Özellikleri oluşturma sırasında kısa biçimde ayarlayın. 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, 4 dersinin 3. dersidir.
“Nesne ve Koleksiyon Başlatıcıları” 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
- Oluşturucuları Tanımlama
- this ile Oluşturucu Zincirleme
- Nesne ve Koleksiyon Başlatıcıları
- Statik Oluşturucular