0Pricing
C# Academy · Ders

Yalnızca init ile Ayarlanabilen Setter'lar

Yalnızca başlatma sırasında ayarlanabilen özellikler oluşturun.

Yalnızca init ile Ayarlanabilen Setter'lar, 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.

Yalnızca Başlatma Sırasında Atanan Özellikler

init erişimcisi, bir özelliğin nesne oluşturulurken (nesne başlatıcıları da dâhil) ayarlanmasına, ancak sonrasında salt okunur olmasına olanak tanır. Biçimi { get; init; } şeklindedir.

using System;

class Point {
    public int X { get; init; }
    public int Y { get; init; }
}

var p = new Point { X = 3, Y = 4 };
Console.WriteLine(p.X + "," + p.Y); // 3,4

Yalnızca Başlatma Sırasında Atama

Nesne oluşturulduktan sonra bir init özelliğine atama yapmak derleme hatasıdır; bu, oluşturma sonrasında değişmezliği garanti eder.

using System;

class Config {
    public string Name { get; init; }
}

var c = new Config { Name = "prod" };
// c.Name = "dev"; // compile error
Console.WriteLine(c.Name); // prod

Nesne Başlatıcıları Hâlâ Çalışır

Salt okunur, yalnızca get erişimli bir özelliğe kıyasla en büyük avantajı, init erişimcisinin nesne başlatıcı söz dizimini desteklemesidir; böylece her özellik için bir oluşturucuya ihtiyaç duymazsınız.

using System;

class Settings {
    public bool DarkMode { get; init; }
    public int FontSize { get; init; }
}

var s = new Settings { DarkMode = true, FontSize = 14 };
Console.WriteLine(s.DarkMode + " " + s.FontSize); // True 14

Oluşturucularla Birlikte Kullanma

init özelliklerini bir oluşturucudan ayarlayabilir ve başlatıcılarla üzerine yazılmalarına da izin verebilirsiniz.

using System;

class User {
    public string Role { get; init; } = "guest";
    public User() { }
}

var u = new User { Role = "admin" };
Console.WriteLine(u.Role); // admin

Varsayılan Değerler

init özellikleri, oluşturma sırasında üzerine yazılmadıkları sürece geçerli olan varsayılan başlatıcılara sahip olabilir.

using System;

class Options {
    public int Retries { get; init; } = 3;
}

Console.WriteLine(new Options().Retries);            // 3
Console.WriteLine(new Options { Retries = 5 }.Retries); // 5

Başlatma ve Atama Karşılaştırması

set erişimcisi her zaman değişikliğe izin verir; init ise atamayı oluşturma aşamasıyla sınırlar. Oluşturma sonrasında değişmez kalması gereken veriler için init seçin.

using System;

class Mutable { public int V { get; set; } }
class Frozen  { public int V { get; init; } }

var m = new Mutable { V = 1 };
m.V = 2; // allowed
Console.WriteLine(m.V); // 2

Başlatma Sırasında Doğrulama

Atanan değeri doğrulamak için destek alanıyla açık bir init gövdesi uygulayabilirsiniz.

using System;

class Percentage {
    private int _value;
    public int Value {
        get => _value;
        init => _value = (value < 0 || value > 100)
            ? throw new ArgumentOutOfRangeException()
            : value;
    }
}

Console.WriteLine(new Percentage { Value = 80 }.Value); // 80

Kayıtlarda Başlatma

Konumsal kayıt özellikleri varsayılan olarak yalnızca init ile ayarlanabilir; kayıtların değişmez olmasının, ancak with kopyalarını desteklemesinin nedeni budur.

using System;

record Account(string Id, decimal Balance);

var a = new Account("A1", 100m);
Console.WriteLine(a.Balance); // 100

İç İçe Nesne Başlatıcıları

init, iç içe nesne başlatıcılarıyla çalışır ve karmaşık değişmez nesne grafiklerini tek bir ifadede oluşturmanıza olanak tanır.

using System;

class Address { public string City { get; init; } }
class Person { public string Name { get; init; } public Address Home { get; init; } }

var p = new Person { Name = "Lin", Home = new Address { City = "Oslo" } };
Console.WriteLine(p.Name + " / " + p.Home.City); // Lin / Oslo

Başlatma ve Kalıtım

Türetilmiş sınıflar, oluşturma aşaması nesnenin tamamını kapsadığı için nesne başlatıcıları aracılığıyla temel sınıfa ait init özelliklerini ayarlayabilir.

using System;

class Base { public int Id { get; init; } }
class Item : Base { public string Name { get; init; } }

var i = new Item { Id = 1, Name = "Pen" };
Console.WriteLine(i.Id + " " + i.Name); // 1 Pen

Bir Araya Getirme

Tamamen init özellikleri ve bir nesne başlatıcısı kullanılarak oluşturulmuş değişmez bir veri aktarım nesnesi.

using System;

class OrderDto {
    public int Id { get; init; }
    public string Customer { get; init; }
    public decimal Amount { get; init; }
}

var o = new OrderDto { Id = 7, Customer = "Ada", Amount = 49.9m };
Console.WriteLine(o.Id + " " + o.Customer + " " + o.Amount); // 7 Ada 49.9

Hızlı Kontrol

Yalnızca başlatma sırasında atanan özellikler konusundaki anlayışınızı sınayın.

Özet

Yalnızca başlatma sırasında atanan özellikleri öğrendiniz.

  • { get; init; }, yalnızca oluşturma sırasında atamaya izin verir.
  • Nesne başlatıcıları init özellikleriyle çalışır.
  • Açık bir init gövdesi aracılığıyla doğrulama ekleyebilirsiniz.
  • Kayıtların konumsal özellikleri varsayılan olarak init ile ayarlanabilir.

Sıkça Sorulan Sorular

“Yalnızca init ile Ayarlanabilen Setter'lar” dersi ücretsiz mi?

Evet — “Yalnızca init ile Ayarlanabilen Setter'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.

“Yalnızca init ile Ayarlanabilen Setter'lar” dersinde ne öğreneceğim?

Yalnızca başlatma sırasında ayarlanabilen özellikler oluşturun. 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.

“Yalnızca init ile Ayarlanabilen Setter'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

  1. Yalnızca init ile Ayarlanabilen Setter'lar
  2. required Değiştiricisi
  3. Değişmez Nesne Kalıpları
  4. Record'larda with İfadeleri
← C# Academy Sayfasına Dön