Akademi C# · Pelajaran

Setter init Sahaja

Cipta sifat yang hanya boleh ditetapkan semasa pemulaan.

Pelajaran 1 daripada 413 langkah

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,4

Tetapkan 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); // prod

Pemula 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 14

Menggabungkan 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); // admin

Nilai 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); // 5

init 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); // 2

init 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); // 80

init 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); // 100

Pemula 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 / Oslo

init 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 Pen

Menggabungkan 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.9

Semakan 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 init yang dinyatakan secara jelas.
  • Sifat rekod berposisi ialah init secara lalai.
Percuma untuk bermula

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

  1. Setter init Sahaja
  2. Pengubah Suai required
  3. Corak Objek Tidak Berubah
  4. Ungkapan with pada Record
← Kembali ke Akademi C#