0Pricing
C# Academy · Pelajaran

Properti Lengkap dengan Field Pendukung

Tambahkan logika ke getter dan setter.

Properti Lengkap dengan Field Pendukung adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Melampaui Properti Otomatis

Saat Anda memerlukan logika di dalam get atau set, tulislah properti lengkap dengan bidang pendukung yang ditulis secara eksplisit. Bidang tersebut menyimpan data, sedangkan aksesor mengendalikan aksesnya.

using System;

class Temperature
{
    private double _celsius;

    public double Celsius
    {
        get { return _celsius; }
        set { _celsius = value; }
    }
}

class Program
{
    static void Main()
    {
        var t = new Temperature();
        t.Celsius = 21.5;
        Console.WriteLine(t.Celsius);
    }
}

Konvensi Bidang Pendukung

Berdasarkan konvensi, bidang pendukung bersifat private dan diberi nama dengan garis bawah di awal, seperti _name. Properti publik mengekspos bidang tersebut.

using System;

class Person
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }
}

class Program
{
    static void Main()
    {
        var p = new Person();
        p.Name = "Grace";
        Console.WriteLine(p.Name);
    }
}

Kata Kunci Nilai

Di dalam aksesor set, parameter implisit value menyimpan nilai yang diberikan dalam penetapan. Anda dapat menentukan tindakan terhadap nilai tersebut.

using System;

class Box
{
    private int _size;

    public int Size
    {
        get { return _size; }
        set { _size = value * 2; }
    }
}

class Program
{
    static void Main()
    {
        var box = new Box();
        box.Size = 10;
        Console.WriteLine("Stored size: " + box.Size);
    }
}

Validasi pada Penyetel

Salah satu penggunaan umum properti lengkap adalah untuk memvalidasi masukan sebelum menyimpannya, serta melemparkan pengecualian jika nilainya tidak valid.

using System;

class Account
{
    private decimal _balance;

    public decimal Balance
    {
        get { return _balance; }
        set
        {
            if (value < 0)
                throw new ArgumentException("Balance cannot be negative");
            _balance = value;
        }
    }
}

class Program
{
    static void Main()
    {
        var a = new Account();
        a.Balance = 500m;
        Console.WriteLine("Balance: " + a.Balance);
    }
}

Properti Terhitung (Hanya-Baca)

Properti yang hanya memiliki get dapat menghitung nilainya dari bidang lain. Tidak ada bidang pendukung karena tidak ada data yang disimpan.

using System;

class Rectangle
{
    private double _width;
    private double _height;

    public Rectangle(double w, double h)
    {
        _width = w;
        _height = h;
    }

    public double Area
    {
        get { return _width * _height; }
    }
}

class Program
{
    static void Main()
    {
        var r = new Rectangle(4, 5);
        Console.WriteLine("Area: " + r.Area);
    }
}

Efek Samping pada Penyetel

Penyetel dapat melakukan lebih dari sekadar menyimpan nilai: penyetel dapat menormalkan masukan, memperbarui status terkait, atau mencatat perubahan.

using System;

class User
{
    private string _email;

    public string Email
    {
        get { return _email; }
        set { _email = value.Trim().ToLower(); }
    }
}

class Program
{
    static void Main()
    {
        var u = new User();
        u.Email = "  Hello@Example.COM  ";
        Console.WriteLine("Normalized: " + u.Email);
    }
}

Perhitungan Tertunda pada Pengambil

Pengambil dapat menyimpan hasil yang mahal untuk dihitung ke dalam bidang pendukung saat pertama kali hasil tersebut diminta.

using System;

class Report
{
    private string _cached;

    public string Content
    {
        get
        {
            if (_cached == null)
                _cached = "Generated at runtime";
            return _cached;
        }
    }
}

class Program
{
    static void Main()
    {
        var r = new Report();
        Console.WriteLine(r.Content);
        Console.WriteLine(r.Content);
    }
}

Mencegah Status yang Tidak Valid

Gabungkan bidang pendukung dengan logika untuk menjaga objek agar selalu valid. Di sini, penyetel membatasi nilai ke dalam suatu rentang.

using System;

class Volume
{
    private int _level;

    public int Level
    {
        get { return _level; }
        set
        {
            if (value < 0) _level = 0;
            else if (value > 100) _level = 100;
            else _level = value;
        }
    }
}

class Program
{
    static void Main()
    {
        var v = new Volume();
        v.Level = 150;
        Console.WriteLine("Clamped: " + v.Level);
    }
}

Menggabungkan Penyimpanan dan Perhitungan

Kelas sering menggabungkan properti tersimpan (dengan bidang pendukung) dan properti hanya-baca terhitung yang diturunkan darinya.

using System;

class Employee
{
    private string _first;
    private string _last;

    public string First { get { return _first; } set { _first = value; } }
    public string Last { get { return _last; } set { _last = value; } }
    public string FullName { get { return _first + " " + _last; } }
}

class Program
{
    static void Main()
    {
        var e = new Employee { First = "Marie", Last = "Curie" };
        Console.WriteLine(e.FullName);
    }
}

Mengirim Notifikasi Perubahan

Penyetel merupakan tempat alami untuk memberi tahu saat data berubah, sebuah pola yang banyak digunakan dalam kerangka kerja antarmuka pengguna.

using System;

class Model
{
    private int _count;

    public int Count
    {
        get { return _count; }
        set
        {
            if (_count != value)
            {
                _count = value;
                Console.WriteLine("Count changed to " + _count);
            }
        }
    }
}

class Program
{
    static void Main()
    {
        var m = new Model();
        m.Count = 1;
        m.Count = 1;
        m.Count = 2;
    }
}

Menggabungkan Semuanya

Properti lengkap memungkinkan kelas menegakkan invarian dan mengekspos data turunan, semuanya melalui antarmuka bersih yang menyerupai bidang.

using System;

class Thermostat
{
    private double _target;

    public double Target
    {
        get { return _target; }
        set { _target = value < 10 ? 10 : value; }
    }

    public string Status { get { return _target >= 22 ? "Warm" : "Cool"; } }
}

class Program
{
    static void Main()
    {
        var th = new Thermostat();
        th.Target = 5;
        Console.WriteLine(th.Target + " -> " + th.Status);
        th.Target = 24;
        Console.WriteLine(th.Target + " -> " + th.Status);
    }
}

Uji Singkat

Ujilah pemahaman Anda tentang properti lengkap.

Ringkasan

Properti lengkap memasangkan bidang pendukung privat dengan aksesor get/set eksplisit, sehingga Anda dapat menambahkan validasi, normalisasi, penyimpanan sementara, atau notifikasi perubahan. Properti terhitung hanya-baca hanya memiliki pengambil dan tidak memiliki bidang pendukung. Kata kunci value membawa nilai yang diberikan ke dalam penyetel.

using System;

class Demo
{
    private int _n;
    public int N
    {
        get { return _n; }
        set { _n = value < 0 ? 0 : value; }
    }
    public int Doubled { get { return _n * 2; } }
}

class Program
{
    static void Main()
    {
        var d = new Demo();
        d.N = -5;
        Console.WriteLine(d.N + ", " + d.Doubled);
    }
}

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Properti Lengkap dengan Field Pendukung” gratis?

Ya — teks lengkap “Properti Lengkap dengan Field Pendukung” 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 “Properti Lengkap dengan Field Pendukung”?

Tambahkan logika ke getter dan setter. 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 2 dari 4.

Berapa lama pelajaran “Properti Lengkap dengan Field Pendukung” 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. Properti yang Diimplementasikan Otomatis
  2. Properti Lengkap dengan Field Pendukung
  3. Anggota Berbentuk Ekspresi
  4. Indexer
← Kembali ke C# Academy