0Pricing
C# Academy · Ders

Record'larda with İfadeleri

Değişmez nesnelerin değiştirilmiş kopyalarını oluşturun.

Record'larda with İfadeleri, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 4. 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.

with İfadesi

Bir with ifadesi, bazı özellikleri değiştirilmiş bir kaydın kopyasını oluşturur ve özgün kaydı değiştirmez. Değişmez kayıtları "güncellemenin" alışılmış yolu budur.

using System;

record Point(int X, int Y);

var a = new Point(1, 2);
var b = a with { Y = 9 };
Console.WriteLine(a + " | " + b); // Point { X = 1, Y = 2 } | Point { X = 1, Y = 9 }

Yıkıcı Olmayan Değişiklik

Özgün kayıt hiçbir zaman değiştirilmez. with, sığ bir kopya oluşturur ve listelenen değişiklikleri yalnızca bu kopyaya uygular.

using System;

record User(string Name, int Age);

var original = new User("Ada", 30);
var older = original with { Age = 31 };
Console.WriteLine(original.Age + " " + older.Age); // 30 31

Birden Çok Özelliği Değiştirme

Aynı anda birden fazla özelliği değiştirmek için süslü parantezlerin içine birkaç atama yazın.

using System;

record Config(string Env, int Retries, bool Verbose);

var baseCfg = new Config("dev", 3, false);
var prod = baseCfg with { Env = "prod", Verbose = true };
Console.WriteLine(prod.Env + " " + prod.Retries + " " + prod.Verbose); // prod 3 True

Değiştirilmeyen Özellikleri Kopyalama

Belirtmediğiniz özellikler kaynak kayıttan olduğu gibi kopyalanır.

using System;

record Product(string Name, decimal Price, int Stock);

var p = new Product("Book", 12m, 5);
var discounted = p with { Price = 10m };
Console.WriteLine(discounted.Name + " " + discounted.Stock); // Book 5

with ve Değer Eşitliği

Kayıtlar değer eşitliği kullandığından, hiçbir şeyi değiştirmeyen bir kopya özgün kayıtla eşittir.

using System;

record Coord(int X, int Y);

var a = new Coord(1, 2);
var b = a with { };
Console.WriteLine(a == b);         // True (value equal)
Console.WriteLine(ReferenceEquals(a, b)); // False (different objects)

Sığ Kopyalama Anlamı

with, derin nesne grafikleri yerine başvuruları kopyalar. İç içe bulunan değiştirilebilir bir nesne, özgün kayıtla kopya arasında paylaşılır.

using System;
using System.Collections.Generic;

record Cart(List<string> Items);

var a = new Cart(new List<string> { "x" });
var b = a with { };
b.Items.Add("y"); // shared list!
Console.WriteLine(a.Items.Count); // 2

Kayıt Yapılarında with

Kayıt yapıları da with özelliğini destekler ve değer türünün değiştirilmiş bir kopyasını üretir.

using System;

record struct Size(int W, int H);

var s = new Size(4, 4);
var wide = s with { W = 8 };
Console.WriteLine(wide.W + "x" + wide.H); // 8x4

with İfadelerini Zincirleme

Bir değişiklik dizisini uygulamak için with ifadelerini zincirleyebilirsiniz; her ifade yeni bir kayıt üretir.

using System;

record Point(int X, int Y, int Z);

var p = new Point(0, 0, 0)
    with { X = 1 }
    with { Y = 2 }
    with { Z = 3 };
Console.WriteLine(p); // Point { X = 1, Y = 2, Z = 3 }

Oluşturucu Olmadan Güncelleme

with, oluşturucu sınıflarına duyulan ihtiyacı ortadan kaldırır: yalnızca kopyalayın ve istediğiniz alanları değiştirin.

using System;

record Email(string To, string Subject, string Body);

var draft = new Email("a@b.com", "Hi", "");
var ready = draft with { Body = "Welcome!" };
Console.WriteLine(ready.Body); // Welcome!

Özel Kopyalama Mantığı

Kayıtlar, with ifadesinin kullandığı korumalı bir kopya oluşturucusu üretir. Kopyaların nasıl oluşturulacağını özelleştirmek için kendi oluşturucunuzu tanımlayabilirsiniz.

using System;

record Audited(string Name) {
    public int Version { get; init; } = 1;
    protected Audited(Audited other) {
        Name = other.Name;
        Version = other.Version + 1; // bump on every copy
    }
}

var a = new Audited("x");
var b = a with { };
Console.WriteLine(a.Version + " " + b.Version); // 1 2

Hepsini Bir Araya Getirme

Durum geçişlerini with ile modellemek, denetim için elverişli ve değişmez bir geçmiş tutmanızı sağlar.

using System;

record Order(string Id, string Status);

var created = new Order("O1", "Created");
var paid = created with { Status = "Paid" };
var shipped = paid with { Status = "Shipped" };
Console.WriteLine(created.Status + " -> " + paid.Status + " -> " + shipped.Status);

Kısa Kontrol

with ifadeleri konusundaki anlayışınızı kontrol edin.

Özet

Kayıt türlerindeki with ifadelerini öğrendiniz.

  • a with { Prop = value }, seçilen özellikleri kopyalar ve değiştirir.
  • Özgün kayıt hiçbir zaman değiştirilmez; işlem yıkıcı değildir.
  • Kopyalama sığdır, bu nedenle iç içe bulunan değiştirilebilir nesneler paylaşılır.
  • Kayıtlar ve kayıt yapıları üzerinde çalışır ve zincirlenebilir.

Sıkça Sorulan Sorular

“Record'larda with İfadeleri” dersi ücretsiz mi?

Evet — “Record'larda with İfadeleri” 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.

“Record'larda with İfadeleri” dersinde ne öğreneceğim?

Değişmez nesnelerin değiştirilmiş kopyalarını 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 4. dersidir.

“Record'larda with İfadeleri” 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