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,4Hanya 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); // prodPenginisialisasi 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 14Menggabungkannya 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); // adminNilai 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); // 5init 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); // 2Inisialisasi 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); // 80Inisialisasi 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); // 100Penginisialisasi 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 / OsloInisialisasi 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 PenMenerapkan 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.9Pemeriksaan 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
initeksplisit. - 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
- Setter Khusus init
- Pengubah required
- Pola Objek Immutable
- Ekspresi with pada Record