Sınıflarda Birincil Oluşturucular
Oluşturucu parametrelerini tür başlığında bildirin.
Sınıflarda Birincil Oluşturucular, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 1. 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.
Birincil Oluşturucu Nedir
Birincil oluşturucu, oluşturucu parametrelerini doğrudan sınıf başlığında bildirmenizi sağlar; örneğin class Point(int x, int y). Parametreler sınıf gövdesinin tamamında kapsam içindedir.
using System;
class Point(int x, int y) {
public int X => x;
public int Y => y;
}
var p = new Point(3, 4);
Console.WriteLine(p.X + "," + p.Y); // 3,4Artık Gereksiz Kod Yok
Birincil oluşturuculardan önce, parametreleri alanlara kopyalamak için yalnızca oluşturucu gövdesi yazmanız gerekirdi. Artık başlık parametreleri bildiriyor ve onlara doğrudan başvurabiliyorsunuz.
using System;
class Greeter(string name) {
public string Greet() => "Hello, " + name + "!";
}
Console.WriteLine(new Greeter("Ada").Greet()); // Hello, Ada!Parametreler Her Yerde Kapsam İçindedir
Birincil oluşturucu parametreleri, sınıfın herhangi bir yerindeki özellik başlatıcılarında, yöntem gövdelerinde ve alan başlatıcılarında kullanılabilir.
using System;
class Circle(double radius) {
public double Area => Math.PI * radius * radius;
public double Circumference => 2 * Math.PI * radius;
}
var c = new Circle(2);
Console.WriteLine(Math.Round(c.Area, 2)); // 12.57Alanları ve Özellikleri Başlatma
Bir alanı veya özelliği bildirim sırasında başlatmak için birincil oluşturucu parametresi kullanabilirsiniz.
using System;
class Account(decimal initial) {
public decimal Balance { get; private set; } = initial;
public void Deposit(decimal amount) => Balance += amount;
}
var a = new Account(100m);
a.Deposit(50m);
Console.WriteLine(a.Balance); // 150Başlıkta Doğrulama
Birincil oluşturucu parametrelerini, bir alana atama sırasında istisna fırlatma ifadeleri kullanarak satır içinde doğrulayabilirsiniz.
using System;
class Person(string name) {
public string Name { get; } =
string.IsNullOrWhiteSpace(name)
? throw new ArgumentException("name required")
: name;
}
Console.WriteLine(new Person("Lin").Name); // LinEk Oluşturucular Ekleme
Birincil oluşturucusu olan bir sınıf yine de ek oluşturucular bildirebilir; ancak bu oluşturucuların : this(...) ile birincil oluşturucuya zincirlenmesi gerekir.
using System;
class Box(int width, int height) {
public int Width => width;
public int Height => height;
public Box(int size) : this(size, size) { }
}
var sq = new Box(5);
Console.WriteLine(sq.Width + "x" + sq.Height); // 5x5Birincil Oluşturucu Gövdeleri
Birincil oluşturucuların kendilerine ait gövdeleri yoktur. Oluşturma sırasında çalışması gereken mantık, alan başlatıcılarına veya zincirlenmiş normal bir oluşturucuya yerleştirilir.
using System;
class Logger(string prefix) {
private readonly string tag = "[" + prefix + "]";
public void Log(string msg) => Console.WriteLine(tag + " " + msg);
}
new Logger("INFO").Log("started"); // [INFO] startedHerkese Açık Özellikler Otomatik Oluşturulmaz
Kayıtların aksine, normal bir sınıftaki birincil oluşturucu herkese açık özellikler oluşturmaz. Parametreler, siz kendiniz dışarı açmadığınız sürece sınıfa özeldir.
using System;
class Temp(double celsius) {
// celsius is NOT a public property here
public double Fahrenheit => celsius * 9 / 5 + 32;
}
Console.WriteLine(new Temp(100).Fahrenheit); // 212Yakalanan Parametreler Alanlara Dönüşür
Bir birincil oluşturucu parametresi yalnızca başlatıcıda değil, bir yöntemde de kullanıldığında derleyici, oluşturma sonrasında da varlığını sürdürmesi için onu gizli bir alanda saklar.
using System;
class Counter(int start) {
private int value = start;
public int Next() => value++;
}
var c = new Counter(10);
Console.WriteLine(c.Next()); // 10
Console.WriteLine(c.Next()); // 11Daha Temiz DI
Birincil oluşturucular DI için yaygın olarak kullanılır: hizmetleri başlıkta bildirir ve elle alan ataması yapmadan yöntemlerde kullanırsınız.
using System;
interface IClock { string Now(); }
class FakeClock : IClock { public string Now() => "12:00"; }
class Service(IClock clock) {
public string Report() => "Time is " + clock.Now();
}
Console.WriteLine(new Service(new FakeClock()).Report()); // Time is 12:00Hepsini Bir Araya Getirme
Bu sınıf, bağımlılıkları için birincil oluşturucu kullanır ve açık bir oluşturucu gövdesi olmadan hesaplanan bir özellik sunar.
using System;
class Rectangle(double w, double h) {
public double Area => w * h;
public double Perimeter => 2 * (w + h);
}
var r = new Rectangle(3, 4);
Console.WriteLine(r.Area + " " + r.Perimeter); // 12 14Hızlı Sınama
Sınıflardaki birincil oluşturucuları anlayıp anlamadığınızı sınayın.
Özet
Sınıflardaki birincil oluşturucuları öğrendiniz.
class C(int x), oluşturucu parametrelerini başlıkta bildirir.- Parametreler sınıf gövdesinin tamamında kapsam içindedir.
- Ek oluşturucular
: this(...)ile zincirlenir. - Normal bir sınıfta bunlar otomatik olarak herkese açık özelliklere dönüşmez.
Sıkça Sorulan Sorular
“Sınıflarda Birincil Oluşturucular” dersi ücretsiz mi?
Evet — “Sınıflarda Birincil Oluşturucular” 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.
“Sınıflarda Birincil Oluşturucular” dersinde ne öğreneceğim?
Oluşturucu parametrelerini tür başlığında bildirin. 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 1. dersidir.
“Sınıflarda Birincil Oluşturucular” 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
- Sınıflarda Birincil Oluşturucular
- Üyelerde Parametreleri Yakalama
- Struct'larla Birincil Oluşturucular
- Özellikler ve Temel Türlerle Birleştirme