Domain Aksesibilitas (Referensi C#)
Domain aksesibilitas anggota menentukan di bagian program mana anggota dapat dirujuk. Jika anggota berlapis dalam jenis lain, domain aksesibilitasnya ditentukan oleh tingkat aksesibilitas anggota dan domain aksesibilitas dari jenis yang segera memuatnya.
Domain aksesibilitas dari jenis tingkat atas setidaknya adalah teks program proyek tempatnya dideklarasikan. Artinya, domain menyertakan semua file sumber proyek ini. Domain aksesibilitas dari jenis berlapis setidaknya adalah teks program dari jenis yang dideklarasikan. Artinya, domain adalah isi jenis, yang mencakup semua jenis berlapis. Domain aksesibilitas jenis berlapis tidak pernah melebihi jenis yang memuatnya. Konsep-konsep ini ditunjukkan dalam contoh berikut.
Contoh
Contoh ini berisi jenis tingkat atas, T1
, dan dua kelas berlapis, M1
dan M2
. Kelas berisi bidang yang memiliki aksesibilitas terdeklarasi yang berbeda. Dalam metode Main
, komentar mengikuti setiap pernyataan untuk menunjukkan domain aksesibilitas setiap anggota. Perhatikan bahwa pernyataan yang mencoba mereferensikan anggota yang tidak dapat diakses dikomentari. Jika Anda ingin melihat kesalahan pengkompilasi yang disebabkan oleh referensi anggota yang tidak dapat diakses, hapus komentar satu per satu.
public class T1
{
public static int publicInt;
internal static int internalInt;
private static int privateInt = 0;
static T1()
{
// T1 can access public or internal members
// in a public or private (or internal) nested class.
M1.publicInt = 1;
M1.internalInt = 2;
M2.publicInt = 3;
M2.internalInt = 4;
// Cannot access the private member privateInt
// in either class:
// M1.privateInt = 2; //CS0122
}
public class M1
{
public static int publicInt;
internal static int internalInt;
private static int privateInt = 0;
}
private class M2
{
public static int publicInt = 0;
internal static int internalInt = 0;
private static int privateInt = 0;
}
}
class MainClass
{
static void Main()
{
// Access is unlimited.
T1.publicInt = 1;
// Accessible only in current assembly.
T1.internalInt = 2;
// Error CS0122: inaccessible outside T1.
// T1.privateInt = 3;
// Access is unlimited.
T1.M1.publicInt = 1;
// Accessible only in current assembly.
T1.M1.internalInt = 2;
// Error CS0122: inaccessible outside M1.
// T1.M1.privateInt = 3;
// Error CS0122: inaccessible outside T1.
// T1.M2.publicInt = 1;
// Error CS0122: inaccessible outside T1.
// T1.M2.internalInt = 2;
// Error CS0122: inaccessible outside M2.
// T1.M2.privateInt = 3;
// Keep the console open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
Spesifikasi Bahasa C#
Untuk informasi selengkapnya, lihat Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.