Nesne Başlatıcılar
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 8 / 70.
Nesne başlatıcılar, çok sayıda parametreye sahip bir yapıcıyı çağırmaya gerek kalmadan, bir nesne oluştururken özellik değerlerini ayarlamak için kullanışlı bir yol sağlar.
Constructor kullanan geleneksel yöntem
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
Person person = new Person();
person.Name = "Alice";
person.Age = 25;
person.City = "New York";Nesne başlatıcı sözdizimini kullanma
Person person = new Person
{
Name = "Alice",
Age = 25,
City = "New York"
};Yapıcı metotlar ile nesne başlatıcılar
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
public Person(string name)
{
Name = name;
}
}
// Yapıcı metot Name'i ayarlar, başlatıcı diğer özellikleri ayarlar
Person person = new Person("Bob")
{
Age = 30,
City = "London"
};İç içe geçmiş nesne başlatıcıları
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
Person person = new Person
{
Name = "Charlie",
Address = new Address
{
Street = "123 Main St",
City = "Boston"
}
};Başlatıcılar ile birden fazla nesne oluşturma
Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };
Person person3 = new Person { Name = "Charlie", Age = 35 };Nesne başlatıcılar kodu daha temiz ve daha okunabilir hale getirir. Özellikler, yapıcı (constructor) çalıştıktan sonra ayarlanır. Başlatıcıları yapıcı parametreleri ile veya parametreleri olmadan kullanabilirsiniz; bu da nesne oluşturmayı esnek ve kısa hale getirir.
Görev
OrtaFarklı nesne ilklendirici (object initializer) yaklaşımlarını kullanarak üç adet Student nesnesi oluşturun:
- student1: Tüm özellikleri (Name, StudentId, Major, GPA) girdiden ayarlamak için nesne ilklendirici ile varsayılan yapıcıyı kullanın
- student2: Yalnızca Name = "Bob" ve Major = "Engineering" değerlerini ayarlamak için nesne ilklendirici kullanın
- student3: Parametre olarak "Charlie" değerini alan yapıcıyı kullanın, ardından StudentId = 54321, Major = "Mathematics", GPA = 3.5 değerlerini ayarlamak için nesne ilklendirici kullanın
Kopya kağıdı
Nesne başlatıcılar (object initializers), bir nesne oluştururken özellik değerlerini ayarlamak için kullanışlı bir yol sağlar:
Person person = new Person
{
Name = "Alice",
Age = 25,
City = "New York"
};Nesne başlatıcılar, yapıcı metotlarla (constructors) birleştirilebilir:
Person person = new Person("Bob")
{
Age = 30,
City = "London"
};İç içe geçmiş nesne başlatıcılar, iç içe geçmiş nesnelerin özelliklerinin ayarlanmasına olanak tanır:
Person person = new Person
{
Name = "Charlie",
Address = new Address
{
Street = "123 Main St",
City = "Boston"
}
};Birden fazla nesne kısa ve öz bir şekilde oluşturulabilir:
Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };Kendin dene
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
int studentId = int.Parse(Console.ReadLine());
string major = Console.ReadLine();
double gpa = double.Parse(Console.ReadLine());
// YAPILACAK: Tüm özellikleri içeren nesne başlatıcıyı kullanarak student1'i oluşturun
// Varsayılan yapıcıyı kullanın ve Name, StudentId, Major ve GPA değerlerini ayarlayın
// YAPILACAK: Sadece Name ve Major özelliklerini içeren nesne başlatıcıyı kullanarak student2'yi oluşturun
// Name "Bob", Major "Engineering" olmalıdır
// YAPILACAK: "Charlie" isim parametresine sahip yapıcıyı kullanarak student3'ü oluşturun
// Ardından StudentId = 54321, Major = "Mathematics", GPA = 3.5 değerlerini ayarlamak için nesne başlatıcıyı kullanın
Console.WriteLine($"Student 1: {student1.Name} (ID: {student1.StudentId}) - {student1.Major}, GPA: {student1.GPA}");
Console.WriteLine($"Student 2: {student2.Name} (ID: {student2.StudentId}) - {student2.Major}, GPA: {student2.GPA}");
Console.WriteLine($"Student 3: {student3.Name} (ID: {student3.StudentId}) - {student3.Major}, GPA: {student3.GPA}");
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci Kayıtları