Setter init Sahaja
Cipta sifat yang hanya boleh ditetapkan semasa pemulaan.
Setter init Sahaja ialah pelajaran Akademi C# percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi C#, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi C# merangkumi sejumlah 4 pelajaran.
Penetap init Sahaja
Pengakses init membolehkan sifat ditetapkan semasa pembinaan objek, termasuk melalui pemula objek, tetapi menjadikannya baca sahaja selepas itu. Bentuknya ialah { 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,4Tetapkan Hanya Semasa Pemulaan
Selepas objek dibina, penetapan kepada sifat init menghasilkan ralat kompilasi, sekali gus menjamin ketidakbolehubahan selepas pembinaan.
using System;
class Config {
public string Name { get; init; }
}
var c = new Config { Name = "prod" };
// c.Name = "dev"; // compile error
Console.WriteLine(c.Name); // prodPemula Objek Masih Berfungsi
Kelebihan utama berbanding sifat baca sahaja ialah init menyokong sintaks pemula objek, jadi anda tidak memerlukan pembina untuk setiap sifat.
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 14Menggabungkan dengan Pembina
Anda boleh menetapkan sifat init daripada pembina dan turut membenarkan penggantian melalui pemula.
using System;
class User {
public string Role { get; init; } = "guest";
public User() { }
}
var u = new User { Role = "admin" };
Console.WriteLine(u.Role); // adminNilai Lalai
Sifat init boleh mempunyai pemula lalai yang digunakan melainkan digantikan semasa pembinaan.
using System;
class Options {
public int Retries { get; init; } = 3;
}
Console.WriteLine(new Options().Retries); // 3
Console.WriteLine(new Options { Retries = 5 }.Retries); // 5init berbanding set
Pengakses set membenarkan mutasi pada bila-bila masa; init mengehadkan penetapan kepada fasa pembinaan. Pilih init untuk data yang tidak berubah selepas penciptaan.
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); // 2init dengan Pengesahan
Anda boleh melaksanakan isi init secara jelas dengan medan sokongan untuk mengesahkan 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); // 80init dalam Rekod
Sifat rekod berposisi ialah init sahaja secara lalai, sebab itu rekod tidak berubah tetapi masih menyokong salinan with.
using System;
record Account(string Id, decimal Balance);
var a = new Account("A1", 100m);
Console.WriteLine(a.Balance); // 100Pemula Objek Bersarang
init berfungsi dengan pemula objek bersarang, membolehkan anda membina graf tidak berubah yang kompleks dalam satu ungkapan.
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 / Osloinit dan Pewarisan
Kelas terbitan boleh menetapkan sifat init kelas asas melalui pemula objek kerana fasa pembinaan merangkumi keseluruhan 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 PenMenggabungkan Kesemuanya
DTO tidak berubah yang dibina sepenuhnya menggunakan sifat init dan pemula 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.9Semakan Pantas
Uji pemahaman anda tentang penetap init sahaja.
Imbas Kembali
Anda telah mempelajari penetap init sahaja.
{ get; init; }membenarkan penetapan hanya semasa pembinaan.- Pemula objek berfungsi dengan sifat
init. - Anda boleh menambah pengesahan melalui isi
inityang dinyatakan secara jelas. - Sifat rekod berposisi ialah
initsecara lalai.
Pelajari C# dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 93
- Pelajaran
- 346
Soalan Lazim
Adakah pelajaran “Setter init Sahaja” percuma?
Ya — teks penuh “Setter init Sahaja” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Akademi C#, tingkat taraf kepada CoddyKit PRO. Kursus Akademi C# merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Setter init Sahaja”?
Cipta sifat yang hanya boleh ditetapkan semasa pemulaan. Anda berlatih Akademi C# menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Akademi C#?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi C# di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Setter init Sahaja” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi C# ini?
Ya. Setiap pelajaran Akademi C# menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Setter init Sahaja
- Pengubah Suai required
- Corak Objek Tidak Berubah
- Ungkapan with pada Record