Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kombinasi kata kunci private protected
adalah pengubah akses anggota. Anggota yang dilindungi pribadi dapat diakses oleh jenis yang diturunkan dari kelas yang memuatnya, tetapi hanya di dalam rakitan yang memuatnya. Untuk perbandingan private protected
dengan pengubah akses lainnya, lihat Tingkat Aksesibilitas.
Catatan
Pengubah akses private protected
valid di C# versi 7.2 dan yang lebih baru.
Contoh
Anggota kelas dasar yang dilindungi secara pribadi dapat diakses dari jenis turunan dalam rakitannya yang berisi hanya jika jenis statis variabel adalah jenis kelas turunan. Misalnya, pertimbangkan segmen kode berikut:
public class BaseClass
{
private protected int myValue = 0;
}
public class DerivedClass1 : BaseClass
{
void Access()
{
var baseObject = new BaseClass();
// Error CS1540, because myValue can only be accessed by
// classes derived from BaseClass.
// baseObject.myValue = 5;
// OK, accessed through the current derived class instance
myValue = 5;
}
}
// Assembly2.cs
// Compile with: /reference:Assembly1.dll
class DerivedClass2 : BaseClass
{
void Access()
{
// Error CS0122, because myValue can only be
// accessed by types in Assembly1
// myValue = 10;
}
}
Contoh ini berisi dua file, Assembly1.cs
dan Assembly2.cs
.
File pertama berisi kelas dasar publik, BaseClass
, dan jenis turunan darinya, DerivedClass1
. BaseClass
memiliki anggota pribadi yang dilindungi, myValue
, yang DerivedClass1
coba akses dengan dua cara. Upaya pertama untuk mengakses myValue
melalui instance BaseClass
akan menghasilkan kesalahan. Namun, upaya untuk menggunakannya sebagai anggota yang diwarisi di DerivedClass1
akan berhasil.
Di file kedua, upaya untuk mengakses myValue
sebagai anggota warisan DerivedClass2
akan menghasilkan kesalahan, karena hanya dapat diakses oleh jenis turunan di Assembly1.
Jika Assembly1.cs
berisi InternalsVisibleToAttribute yang menamai Assembly2
, kelas turunan DerivedClass2
akan memiliki akses ke private protected
anggota yang dideklarasikan dalam BaseClass
. InternalsVisibleTo
membuat private protected
anggota terlihat oleh kelas turunan di rakitan lain.
Anggota struct tidak boleh private protected
karena struct tidak dapat diwarisi.
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.