Bagikan melalui


Domain aksesibilitas (referensi C#)

Domain aksesibilitas anggota menentukan bagian program tempat Anda dapat mereferensikan anggota tersebut. Jika anggota ditumpuk dalam jenis lain, tingkat aksesibilitas anggota dan domain aksesibilitas dari jenis yang segera berisi menentukan domain aksesibilitasnya.

Referensi bahasa C# mendokumentasikan versi bahasa C# yang paling baru dirilis. Ini juga berisi dokumentasi awal untuk fitur dalam pratinjau publik untuk rilis bahasa yang akan datang.

Dokumentasi mengidentifikasi fitur apa pun yang pertama kali diperkenalkan dalam tiga versi terakhir bahasa atau dalam pratinjau publik saat ini.

Petunjuk / Saran

Untuk menemukan kapan fitur pertama kali diperkenalkan di C#, lihat artikel tentang riwayat versi bahasa C#.

Domain aksesibilitas dari jenis tingkat atas selalu menyertakan setidaknya teks program proyek tempat Anda mendeklarasikannya. Dengan kata lain, domain menyertakan semua file sumber dalam proyek. Domain aksesibilitas dari jenis berlapis selalu menyertakan setidaknya teks program dari jenis tempat Anda mendeklarasikannya. Dengan kata lain, domain adalah isi jenis, yang mencakup semua jenis berlapis. Domain aksesibilitas dari jenis berlapis tidak pernah melebihi jenis yang berisi. Contoh berikut menunjukkan konsep-konsep ini.

Contoh ini berisi jenis tingkat atas, T1, dan dua kelas berlapis, M1 dan M2. Kelas berisi bidang yang memiliki aksesibilitas yang dideklarasikan berbeda. Dalam metode , Main komentar mengikuti setiap pernyataan untuk menunjukkan domain aksesibilitas setiap anggota. Pernyataan yang mencoba mereferensikan anggota yang tidak dapat diakses dikomentari. Jika Anda ingin melihat kesalahan pengkompilasi yang disebabkan oleh mereferensikan 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#.

Lihat juga