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.