Bagikan melalui


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

Properti menawarkan kemudahan anggota data publik tanpa risiko yang terkait dengan akses ke data objek yang tidak terlindungi, tidak terkendali, dan tidak terverifikasi. Properti mendeklarasikan aksesor: metode khusus yang menetapkan dan mengambil nilai dari anggota data yang mendasarinya. Aksesor set memungkinkan anggota data ditetapkan, dan aksesor get mengambil nilai anggota data.

Sampel ini menunjukkan kelas Person yang memiliki dua properti: Name (string) dan Age (int). Kedua properti menyediakan aksesor get dan set, 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 - {person}");

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

        // Increment the Age property:
        person.Age += 1;
        Console.WriteLine($"Person details - {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

Dalam contoh sebelumnya, properti Name dan Age bersifat publik dan menyertakan baik get maupun aksesor set. Aksesor publik memungkinkan objek apa pun untuk membaca dan menulis properti ini. Namun, terkadang lebih baik untuk mengecualikan salah satu aksesornya. Anda dapat menghapus aksesor set untuk menjadikan properti hanya dapat dibaca.

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

Atau, Anda dapat mengekspos satu aksesor secara publik tetapi membuat yang lain privat atau terlindungi. Untuk informasi selengkapnya, lihat Aksesibilitas Aksesor Asimetris.

Setelah properti dideklarasikan, properti dapat digunakan sebagai field dari 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 yang rapi untuk meningkatkan properti Age pada objek Person.

person.Age += 1;

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

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

Metode ToString didefinisikan ulang 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