Struct'larla Birincil Oluşturucular
Birincil oluşturucuları değer türlerine uygulayın.
Struct'larla Birincil Oluşturucular, 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.
Yapılarda Birincil Oluşturucular
Yapılar da birincil oluşturucuları destekler: struct Point(int x, int y). Bunlar sınıflardakilere çok benzer; parametreleri üst bilgide bildirir.
using System;
struct 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,4Parametresiz Bir Oluşturucu Hâlâ Vardır
Yapıların varsayılan değeri üreten örtük bir parametresiz oluşturucusu her zaman vardır. Birincil oluşturucu, bunun yanında parametreli bir oluşturucu ekler.
using System;
struct Vec(int x, int y) {
public int X => x;
public int Y => y;
}
var zero = new Vec(); // default: x=0, y=0
Console.WriteLine(zero.X + "," + zero.Y); // 0,0Parametreleri Özellikler Aracılığıyla Sunma
Sınıflarda olduğu gibi, yapıların birincil oluşturucu parametreleri otomatik olarak genel erişimli özelliklere dönüşmez; bunları açıkça sunmanız gerekir.
using System;
struct Size(int w, int h) {
public int Width { get; } = w;
public int Height { get; } = h;
}
var s = new Size(10, 20);
Console.WriteLine(s.Width * s.Height); // 200Hesaplanan Üyeler
Yapıların birincil oluşturucuları, hesaplanan ve ifade gövdeli üyelerle iyi uyum sağlar.
using System;
struct Complex(double re, double im) {
public double Magnitude => Math.Sqrt(re * re + im * im);
}
Console.WriteLine(new Complex(3, 4).Magnitude); // 5Değişmez Yapılar
Bir readonly struct, birincil oluşturucuyla birlikte değişmezliği garanti eder. Tüm üyeler durumu değiştirmemelidir; bu da yalnızca get erişimli özelliklerle mükemmel uyum sağlar.
using System;
readonly struct Money(decimal amount, string currency) {
public decimal Amount { get; } = amount;
public string Currency { get; } = currency;
public string Display => Amount.ToString("0.00") + " " + Currency;
}
Console.WriteLine(new Money(5m, "USD").Display); // 5.00 USDBirincil Oluşturucuya Zincirleme
Ek yapı oluşturucuları, tıpkı sınıflarda olduğu gibi : this(...) ile birincil oluşturucuyu çağırmalıdır.
using System;
struct Square(int side) {
public int Side => side;
public int Area => side * side;
public Square() : this(1) { } // explicit default side
}
Console.WriteLine(new Square(4).Area); // 16Varsayılan ve Birincil Oluşturucu
new Square() ifadesinin örtük sıfırla başlatmayı veya bildirdiğiniz parametresiz oluşturucuyu kullanabileceğini unutmayın. Zincirleme yapan bir oluşturucu tanımlarsanız kendi mantığınız çalışır.
using System;
struct Pct(double value) {
public double Value { get; } = value;
public Pct() : this(100) { }
}
Console.WriteLine(new Pct().Value); // 100Değer Anlambilimi Korunur
Yapılar hâlâ değere göre kopyalanır. Birincil oluşturucu bunu değiştirmez: bir yapı atandığında tüm alanları kopyalanır.
using System;
struct Counter(int n) {
public int N { get; set; } = n;
}
var a = new Counter(1);
var b = a; // copy
b.N = 99;
Console.WriteLine(a.N + " " + b.N); // 1 99Değiştirilebilir Alanları Başlatma
Değişmez yapılar genellikle tercih edilse de parametrelerden ayarlanabilir özellikleri veya alanları başlatabilirsiniz.
using System;
struct Bag(int capacity) {
public int Capacity { get; set; } = capacity;
public int Used { get; set; } = 0;
}
var bag = new Bag(10);
bag.Used = 3;
Console.WriteLine(bag.Capacity - bag.Used); // 7Yapıdan Ayrıştırma
Demet benzeri açma işlemi elde etmek için birincil oluşturucuyu Deconstruct yöntemiyle birlikte kullanın.
using System;
struct Point(int x, int y) {
public int X => x;
public int Y => y;
public void Deconstruct(out int a, out int b) { a = x; b = y; }
}
var (px, py) = new Point(7, 8);
Console.WriteLine(px + "," + py); // 7,8Bir Araya Getirme
Yalnızca okunur bir yapı ve birincil oluşturucuyla oluşturulmuş küçük, değişmez bir değer türü.
using System;
readonly struct Temperature(double celsius) {
public double Celsius { get; } = celsius;
public double Fahrenheit => Celsius * 9 / 5 + 32;
}
var t = new Temperature(25);
Console.WriteLine(t.Fahrenheit); // 77Hızlı Kontrol
Yapılarla birincil oluşturucular konusundaki kavrayışınızı sınayın.
Özet
Yapılardaki birincil oluşturucuları öğrendiniz.
struct P(int x, int y), parametreleri üst bilgide bildirir.- Örtük parametresiz oluşturucu hâlâ vardır.
- Değişmez değer türleri için
readonly structile birleştirin. - Ek oluşturucular
: this(...)ile zincirlenir.
Sıkça Sorulan Sorular
“Struct'larla Birincil Oluşturucular” dersi ücretsiz mi?
Evet — “Struct'larla 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.
“Struct'larla Birincil Oluşturucular” dersinde ne öğreneceğim?
Birincil oluşturucuları değer türlerine uygulayı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.
“Struct'larla 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