Aku ingin melakukan ini:
public Name
{
get;
set
{
dosomething();
??? = value
}
}
Apakah mungkin menggunakan bidang pribadi yang dibuat secara otomatis?
Atau apakah saya harus menerapkannya dengan cara ini:
private string name;
public string Name
{
get
{
return name;
}
set
{
dosomething();
name = value
}
}
c#
properties
Peterdk
sumber
sumber
Jawaban:
Setelah Anda ingin melakukan kustom apa pun di getter atau setter, Anda tidak dapat lagi menggunakan properti otomatis.
sumber
Anda dapat mencoba sesuatu seperti ini:
public string Name { get; private set; } public void SetName(string value) { DoSomething(); this.Name = value; }
sumber
private set
akan mencegah properti disetel oleh anggota kelasnya; itu akan menjadi hanya-baca. Anda hanya dapat menyetel datanya di konstruktor.Ini tidak mungkin. Baik properti yang diterapkan secara otomatis atau kode khusus.
sumber
Mulai C # 7, Anda dapat menggunakan definisi isi ekspresi untuk properti
get
danset
pengakses.Lihat selengkapnya di sini
private string _name; public string Name { get => _name; set { DoSomething(); _name = value; } }
sumber
Anda diharuskan menerapkannya sepenuhnya sesuai skenario Anda. Keduanya
get
danset
harus diterapkan secara otomatis atau diterapkan sepenuhnya bersama-sama, bukan kombinasi keduanya.sumber