Akademi C# · Pelajaran

Pembina Utama dengan Struct

Gunakan pembina utama pada jenis nilai.

Pelajaran 3 daripada 413 langkah

Pembina Utama dengan Struct ialah pelajaran Akademi C# percuma di CoddyKit. Ini ialah pelajaran 3 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.

Pembina Utama pada Struktur

Struktur turut menyokong pembina utama: struct Point(int x, int y). Cara kerjanya hampir sama seperti pada kelas, iaitu mengisytiharkan parameter dalam pengepala.

using System;

struct Point(int x, int y) {
    public int X => x;
    public int Y => y;
}

var p = new Point(3, 4);
Console.WriteLine(p.X + "," + p.Y); // 3,4

Pembina Tanpa Parameter Masih Wujud

Struktur sentiasa mempunyai pembina tanpa parameter tersirat yang menghasilkan nilai lalai. Pembina utama menambah pembina berparameter di sampingnya.

using System;

struct Vec(int x, int y) {
    public int X => x;
    public int Y => y;
}

var zero = new Vec(); // default: x=0, y=0
Console.WriteLine(zero.X + "," + zero.Y); // 0,0

Mendedahkan Parameter melalui Sifat

Seperti kelas, parameter pembina utama struktur tidak menjadi sifat awam secara automatik; dedahkan parameter tersebut secara jelas.

using System;

struct Size(int w, int h) {
    public int Width { get; } = w;
    public int Height { get; } = h;
}

var s = new Size(10, 20);
Console.WriteLine(s.Width * s.Height); // 200

Ahli Terhitung

Pembina utama struktur sangat sesuai digandingkan dengan ahli terhitung yang berasaskan ungkapan.

using System;

struct Complex(double re, double im) {
    public double Magnitude => Math.Sqrt(re * re + im * im);
}

Console.WriteLine(new Complex(3, 4).Magnitude); // 5

Struktur readonly

readonly struct dengan pembina utama menjamin ketidakbolehubahan. Semua ahli tidak boleh mengubah keadaan, dan ini sangat sesuai dengan sifat yang hanya boleh dibaca.

using System;

readonly struct Money(decimal amount, string currency) {
    public decimal Amount { get; } = amount;
    public string Currency { get; } = currency;
    public string Display => Amount.ToString("0.00") + " " + Currency;
}

Console.WriteLine(new Money(5m, "USD").Display); // 5.00 USD

Merantaikan kepada Pembina Utama

Pembina struktur tambahan mesti memanggil pembina utama dengan : this(...), sama seperti kelas.

using System;

struct Square(int side) {
    public int Side => side;
    public int Area => side * side;
    public Square() : this(1) { } // explicit default side
}

Console.WriteLine(new Square(4).Area); // 16

Pembina Lalai berbanding Pembina Utama

Perhatikan bahawa new Square() boleh menggunakan sama ada pemulaan sifar tersirat atau pembina tanpa parameter yang anda isytiharkan. Jika anda mentakrifkan pembina yang merantaikan panggilan, logik anda akan dijalankan.

using System;

struct Pct(double value) {
    public double Value { get; } = value;
    public Pct() : this(100) { }
}

Console.WriteLine(new Pct().Value); // 100

Semantik Nilai Kekal

Struktur masih disalin mengikut nilai. Pembina utama tidak mengubah perkara itu: menetapkan struktur akan menyalin semua medannya.

using System;

struct Counter(int n) {
    public int N { get; set; } = n;
}

var a = new Counter(1);
var b = a;       // copy
b.N = 99;
Console.WriteLine(a.N + " " + b.N); // 1 99

Memulakan Medan Mutable

Anda boleh memulakan sifat atau medan yang boleh ditetapkan daripada parameter, walaupun struktur tidak berubah biasanya lebih digalakkan.

using System;

struct Bag(int capacity) {
    public int Capacity { get; set; } = capacity;
    public int Used { get; set; } = 0;
}

var bag = new Bag(10);
bag.Used = 3;
Console.WriteLine(bag.Capacity - bag.Used); // 7

Penyahstrukturan

Gandingkan pembina utama dengan kaedah Deconstruct untuk mendapatkan pembongkaran seperti tupel.

using System;

struct Point(int x, int y) {
    public int X => x;
    public int Y => y;
    public void Deconstruct(out int a, out int b) { a = x; b = y; }
}

var (px, py) = new Point(7, 8);
Console.WriteLine(px + "," + py); // 7,8

Menggabungkan Kesemuanya

Jenis nilai kecil yang tidak berubah, dibina menggunakan struktur readonly dan pembina utama.

using System;

readonly struct Temperature(double celsius) {
    public double Celsius { get; } = celsius;
    public double Fahrenheit => Celsius * 9 / 5 + 32;
}

var t = new Temperature(25);
Console.WriteLine(t.Fahrenheit); // 77

Semakan Pantas

Uji pemahaman anda tentang pembina utama dengan struktur.

Imbas Kembali

Anda telah mempelajari pembina utama pada struktur.

  • struct P(int x, int y) mengisytiharkan parameter dalam pengepala.
  • Pembina tanpa parameter tersirat masih wujud.
  • Gabungkan dengan readonly struct untuk jenis nilai yang tidak berubah.
  • Pembina tambahan merantaikan panggilan dengan : this(...).
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 “Pembina Utama dengan Struct” percuma?

Ya — teks penuh “Pembina Utama dengan Struct” 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 “Pembina Utama dengan Struct”?

Gunakan pembina utama pada jenis nilai. 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 3 daripada 4.

Berapa lamakah pelajaran “Pembina Utama dengan Struct” 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. Pembina Utama pada Kelas
  2. Menangkap Parameter dalam Ahli
  3. Pembina Utama dengan Struct
  4. Menggabungkan dengan Sifat dan Jenis Asas
← Kembali ke Akademi C#