0Pricing
C# Academy · Pelajaran

Setter Khusus init

Buat properti yang hanya dapat diatur saat inisialisasi.

Setter Khusus init adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.

Penyetel yang Hanya Dapat Diinisialisasi

Aksesor init memungkinkan properti diatur selama konstruksi objek, termasuk melalui penginisialisasi objek, tetapi menjadikannya hanya dapat dibaca setelahnya. Bentuknya adalah { get; init; }.

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

Hanya Diatur saat Inisialisasi

Setelah objek selesai dibuat, penetapan ke properti init akan menjadi galat kompilasi, sehingga ketidakdapatubahan setelah konstruksi terjamin.

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

Penginisialisasi Objek Tetap Berfungsi

Keunggulan utama dibandingkan properti yang hanya dapat dibaca adalah init mendukung sintaks penginisialisasi objek, sehingga Anda tidak memerlukan konstruktor untuk setiap properti.

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

Menggabungkannya dengan Konstruktor

Anda dapat mengatur properti init dari konstruktor sekaligus mengizinkan penggantian melalui penginisialisasi.

using System;

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

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

Nilai Bawaan

Properti init dapat memiliki penginisialisasi bawaan yang berlaku kecuali diganti selama konstruksi.

using System;

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

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

init dibanding set

Aksesor set memungkinkan perubahan kapan saja, sedangkan init membatasi penetapan pada tahap konstruksi. Pilih init untuk data yang tidak dapat diubah setelah pembuatan.

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

Inisialisasi dengan Validasi

Anda dapat mengimplementasikan isi init secara eksplisit dengan bidang pendukung untuk memvalidasi nilai yang ditetapkan.

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

Inisialisasi pada Rekaman

Properti rekaman posisional secara bawaan hanya dapat menggunakan init, sehingga rekaman tidak dapat diubah tetapi tetap mendukung salinan dengan with.

using System;

record Account(string Id, decimal Balance);

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

Penginisialisasi Objek Bertingkat

init dapat digunakan dengan penginisialisasi objek bertingkat, sehingga Anda dapat membangun graf objek kompleks yang tidak dapat diubah dalam satu ekspresi.

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

Inisialisasi dan Pewarisan

Kelas turunan dapat mengatur properti dasar init melalui penginisialisasi objek, karena tahap konstruksi mencakup seluruh objek.

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

Menerapkan Semuanya

DTO yang tidak dapat diubah, dibangun sepenuhnya menggunakan properti init dan penginisialisasi objek.

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

Pemeriksaan Singkat

Uji pemahaman Anda tentang penyetel yang hanya dapat diinisialisasi.

Ringkasan

Anda telah mempelajari penyetel yang hanya dapat diinisialisasi.

  • { get; init; } hanya memungkinkan penetapan selama konstruksi.
  • Penginisialisasi objek dapat digunakan dengan properti init.
  • Anda dapat menambahkan validasi melalui isi init eksplisit.
  • Properti posisional rekaman secara bawaan menggunakan init.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Setter Khusus init” gratis?

Ya — teks lengkap “Setter Khusus init” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Setter Khusus init”?

Buat properti yang hanya dapat diatur saat inisialisasi. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Setter Khusus init” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?

Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Setter Khusus init
  2. Pengubah required
  3. Pola Objek Immutable
  4. Ekspresi with pada Record
← Kembali ke C# Academy