Bagikan melalui


Cara mendeklarasikan dan menggunakan properti baca tulis (Panduan Pemrograman C#)

Properti memberikan kenyamanan anggota data publik tanpa risiko yang datang dengan akses yang tidak terlindungi, tidak terkontrol, dan tidak terverifikasi ke data objek. Properti mendeklarasikan aksesor: metode khusus yang menetapkan dan mengambil nilai dari anggota data yang mendasar. Pengakses set memungkinkan anggota data ditetapkan, dan pengakses get mengambil nilai anggota data.

Sampel ini menunjukkan kelas Person yang memiliki dua properti: Name (string) dan Age (int). Kedua properti menyediakan get dan set pengaktor, sehingga dianggap sebagai properti baca/tulis.

Contoh

class Person
{
    private string _name = "N/A";
    private int _age = 0;

    // Declare a Name property of type string:
    public string Name
    {
        get
        {
            return _name;
        }
        set
        {
            _name = value;
        }
    }

    // Declare an Age property of type int:
    public int Age
    {
        get
        {
            return _age;
        }

        set
        {
            _age = value;
        }
    }

    public override string ToString()
    {
        return "Name = " + Name + ", Age = " + Age;
    }
}

public class Wrapper
{
    private string _name = "N/A";
    public string Name
    {
        get
        {
            return _name;
        }
        private set
        {
            _name = value;
        }
    }

}

class TestPerson
{
    static void Main()
    {
        // Create a new Person object:
        Person person = new Person();

        // Print out the name and the age associated with the person:
        Console.WriteLine("Person details - {0}", person);

        // Set some values on the person object:
        person.Name = "Joe";
        person.Age = 99;
        Console.WriteLine("Person details - {0}", person);

        // Increment the Age property:
        person.Age += 1;
        Console.WriteLine("Person details - {0}", person);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
/* Output:
    Person details - Name = N/A, Age = 0
    Person details - Name = Joe, Age = 99
    Person details - Name = Joe, Age = 100
*/

Pemrograman yang Kuat

Pada contoh sebelumnya, properti Name dan Age adalah publik dan menyertakan pengakses get dan set. Aksesor publik memungkinkan objek apa pun untuk membaca dan menulis properti ini. Namun, terkadang diinginkan untuk mengecualikan salah satu aksesor. Anda dapat menghilangkan set aksesor untuk membuat properti baca-saja:

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

Atau, Anda dapat memperlihatkan satu pengakses secara publik tetapi menjadikan pengakses lainnya privat atau dilindungi. Untuk informasi selengkapnya, lihat Aksesibilitas Pengakses Asimetris.

Setelah properti dideklarasikan, properti dapat digunakan sebagai bidang kelas. Properti memungkinkan sintaksis alami saat mendapatkan dan mengatur nilai properti, seperti dalam pernyataan berikut:

person.Name = "Joe";
person.Age = 99;

Dalam metode properti set , variabel khusus value tersedia. Variabel ini berisi nilai yang ditentukan pengguna, misalnya:

_name = value;

Perhatikan sintaks bersih untuk menambahkan properti Age pada objek Person:

person.Age += 1;

Jika metode set dan get terpisah digunakan untuk memodelkan properti, kode yang setara mungkin terlihat seperti ini:

person.SetAge(person.GetAge() + 1);

Metode ToString diganti dalam contoh ini:

public override string ToString()
{
    return "Name = " + Name + ", Age = " + Age;
}

Perhatikan bahwa ToString tidak secara eksplisit digunakan dalam program. Ini dipanggil secara default oleh WriteLine panggilan.

Lihat juga