Auto-Implemented Properties C#


Di C # 3.0 dan yang lebih baru, properti yang diimplementasikan secara otomatis membuat deklarasi properti lebih ringkas bila tidak ada logika tambahan yang diperlukan pada accessors properti.
Properti  juga memungkinkan client code untuk membuat objek.

Ketika kita mendeklarasikan properti seperti ditunjukkan pada contoh berikut, compiler membuat field dukungan anonim private yang hanya dapat diakses melalui properti dan set accesor.
Contoh
Contoh berikut menunjukkan simple class yang memiliki beberapa properti yang diimplementasikan secara otomatis:
// This class is mutable. Its data can be modified from
// outside the class.
class Customer
{
    // Auto-Impl Properties for trivial get and set
    public double TotalPurchases { get; set; }
    public string Name { get; set; }
    public int CustomerID { get; set; }

    // Constructor
    public Customer(double purchases, string name, int ID)
    {
        TotalPurchases = purchases;
        Name = name;
        CustomerID = ID;
    }
    // Methods
    public string GetContactInfo() {return "ContactInfo";}
    public string GetTransactionHistory() {return "History";}

    // .. Additional methods, events, etc.
}

class Program
{
    static void Main()
    {
        // Intialize a new object.
        Customer cust1 = new Customer ( 4987.63, "Northwind",90108 );

        //Modify a property
        cust1.TotalPurchases += 499.99;
    }
}
Di C # 6 dan yang lebih baru, Kita dapat menginisialisasi properti yang diimplementasikan secara otomatis dengan field yang sama:
public string FirstName { get; set; } = "Jane";  
Class yang ditunjukkan pada contoh sebelumnya dapat diubah. Client code dapat mengubah nilai pada objek setelah dibuat.

Di class kompleks yang mengandung behivior dan metod yang signifikan (methods), seringkali diperlukan untuk memiliki sifat public.

 Namun, untuk class small atau struct yang hanya encapsulate set nilai (data) dan memiliki sedikit atau tidak ada behavior, Kita harus membuat objek tidak berubah dengan menyatakan accessor yang diset sebagai private (immutable ke konsumen) atau dengan declar hanya mendapatkan aksesor (immutable di mana-mana kecuali konstruktor).

Atribut diizinkan pada properti yang diimplementasikan secara otomatis namun jelas tidak pada field dukungan karena tidak dapat diakses dari source code kita. Jika kita harus menggunakan atribut pada field backing properti, buat saja properti reqular.
Previous
Next Post »