Penggunaan Access Modifiers C# Asp.Net


Semua tipe data dan tipe member memiliki tingkat aksesibilitas, yang mengontrol apakah code tersebut dapat digunakan dari code lain di assembly atau assembly lainnya.

Kita dapat menggunakan modifier akses berikut untuk menentukan aksesibilitas tipe atau member saat kita declare: public : Tipe data atau member dapat diakses oleh code lain di assembly yang sama atau assembly lain yang mereferensikannya. private : Tipe atau member dapat diakses hanya dengan code di class atau struct yang sama.

protected : Tipe atau member hanya dapat diakses dengan code di class yang sama, atau di class yang berasal dari class itu. internal : Tipe atau member dapat diakses dengan code apapun dalam assembly yang sama, tapi tidak dari assembly lain protected internal :Tipe atau member dapat diakses dengan code apapun di assembly yang dideklarasikan, atau dari dalam class turunan di assembly lain.

private protected : Tipe atau member dapat diakses hanya di dalam perakitan deklarasinya, dengan code di class yang sama atau dalam tipe data yang berasal dari class tersebut. Contoh berikut menunjukkan bagaimana menentukan Modifiers akses pada tipe dan member :
public class Bicycle
{
    public void Pedal() { }
}
Tidak semua Modifiers akses dapat digunakan oleh semua tipe data atau member dalam semua konteks, dan dalam beberapa kasus aksesibilitas member tipe dibatasi oleh aksesibilitas tipe yang terkandung. Bagian berikut memberikan rincian lebih lanjut tentang aksesibilitas.

  • Class and Struct Accessibility


Class dan struct yang dideklarasikan secara langsung dalam ruang nama (dengan kata lain, yang tidak bersarang di class atau struct lain) dapat berupa public atau internal.

Internal adalah default jika tidak ada Modifiers akses yang ditentukan. Member struct, termasuk class nested dan struct, dapat dinyatakan sebagai publik, internal, atau pribadi. Member class, termasuk class bersarang dan struct, dapat publik, protected internal, prtected, internal, private nested atau private.

Tingkat akses untuk member class dan member struct, termasuk class dan struct nested, bersifat private secara default. Private nested tidak dapat diakses dari luar tipe yang dikandungnya. Class turunan tidak dapat memiliki aksesibilitas lebih besar daripada tipe dasarnya.

 Dengan kata lain, Kita tidak dapat memiliki class publik B yang berasal dari class internal A. Jika ini diperbolehkan, itu akan berpengaruh pada create public, karena semua member A yang dilindungi atau internal dapat diakses dari class turunan.

  • Class and Struct Member Accessibility


Member class (termasuk class nested dan struct) dapat dinyatakan dengan salah satu dari enam jenis akses tersebut. Member struktur tidak dapat dinyatakan terlindungi karena struct tidak mendukung inheritance. Biasanya, aksesibilitas member tidak lebih besar daripada aksesibilitas tipe yang mengandungnya.

Namun, member public class internal dapat diakses dari luar assembly jika member menerapkan metode interface atau mengganti metode virtual yang didefinisikan di class basis publik. tipe data dari setiap member yang merupakan field, properti, atau events setidaknya harus dapat diakses sebagai member itu private. Demikian pula, tipe data value dan tipe data parameter dari setiap member yaitu metod, pengindeks, atau delegasi harus setidaknya dapat diakses sebagai member itu private. Misalnya, Kita tidak dapat memiliki metod umum M yang mengembalikan Class C kecuali C juga bersifat publik. Demikian juga, Kita tidak dapat memiliki properti terlindungi dari tipe A jika A dinyatakan sebagai private.

Semua tipe data dan tipe member memiliki tingkat aksesibilitas, yang mengontrol apakah code tersebut dapat digunakan dari code lain di assembly atau assembly lainnya. Kita dapat menggunakan modifier akses berikut untuk menentukan aksesibilitas tipe atau member saat kita declare: public : Tipe data atau member dapat diakses oleh code lain di assembly yang sama atau assembly lain yang mereferensikannya. private : Tipe atau member dapat diakses hanya dengan code di class atau struct yang sama. protected : Tipe atau member hanya dapat diakses dengan code di class yang sama, atau di class yang berasal dari class itu.

internal : Tipe atau member dapat diakses dengan code apapun dalam assembly yang sama, tapi tidak dari assembly lain protected internal :Tipe atau member dapat diakses dengan code apapun di assembly yang dideklarasikan, atau dari dalam class turunan di assembly lain. private protected : Tipe atau member dapat diakses hanya di dalam perakitan deklarasinya, dengan code di class yang sama atau dalam tipe data yang berasal dari class tersebut. Contoh berikut menunjukkan bagaimana menentukan Modifiers akses pada tipe dan member :
public class Bicycle
{
    public void Pedal() { }
}
Tidak semua Modifiers akses dapat digunakan oleh semua tipe data atau member dalam semua konteks, dan dalam beberapa kasus aksesibilitas member tipe dibatasi oleh aksesibilitas tipe yang terkandung. Bagian berikut memberikan rincian lebih lanjut tentang aksesibilitas.

  • Class and Struct Accessibility


Class dan struct yang dideklarasikan secara langsung dalam ruang nama (dengan kata lain, yang tidak bersarang di class atau struct lain) dapat berupa public atau internal. Internal adalah default jika tidak ada Modifiers akses yang ditentukan. Member struct, termasuk class nested dan struct, dapat dinyatakan sebagai publik, internal, atau pribadi.

Member class, termasuk class bersarang dan struct, dapat publik, protected internal, prtected, internal, private nested atau private. Tingkat akses untuk member class dan member struct, termasuk class dan struct nested, bersifat private secara default. Private nested tidak dapat diakses dari luar tipe yang dikandungnya.

Class turunan tidak dapat memiliki aksesibilitas lebih besar daripada tipe dasarnya. Dengan kata lain, Kita tidak dapat memiliki class publik B yang berasal dari class internal A. Jika ini diperbolehkan, itu akan berpengaruh pada create public, karena semua member A yang dilindungi atau internal dapat diakses dari class turunan.

  • Class and Struct Member Accessibility


Member class (termasuk class nested dan struct) dapat dinyatakan dengan salah satu dari enam jenis akses tersebut. Member struktur tidak dapat dinyatakan terlindungi karena struct tidak mendukung inheritance. Biasanya, aksesibilitas member tidak lebih besar daripada aksesibilitas tipe yang mengandungnya.

Namun, member public class internal dapat diakses dari luar assembly jika member menerapkan metode interface atau mengganti metode virtual yang didefinisikan di class basis publik. tipe data dari setiap member yang merupakan field, properti, atau events setidaknya harus dapat diakses sebagai member itu private.

Demikian pula, tipe data value dan tipe data parameter dari setiap member yaitu metod, pengindeks, atau delegasi harus setidaknya dapat diakses sebagai member itu private. Misalnya, Kita tidak dapat memiliki metod umum M yang mengembalikan Class C kecuali C juga bersifat publik. Demikian juga, Kita tidak dapat memiliki properti terlindungi dari tipe A jika A dinyatakan sebagai private.

Untuk mengatur tingkat akses member class atau struct, tambahkan keyword yang sesuai ke deklarasi member, seperti yang ditunjukkan pada contoh berikut.
// public class:
public class Tricycle
{
    // protected method:
    protected void Pedal() { }

    // private field:
    private int wheels = 3;

    // protected internal property:
    protected internal int Wheels
    {
        get { return wheels; }
    }
}

  • Other Type


Interface yang dideklarasikan secara langsung dalam namespace dapat dinyatakan sebagai publik atau internal dan, seperti class dan struct, interface default untuk akses internal.

Member interface selalu publik karena tujuan sebuah interface adalah untuk memungkinkan tipe data lain mengakses class atau struct. Tidak ada Modifiers akses yang dapat diterapkan ke member interface.

Enumeration members selalu public, dan tidak ada modiffier akses yang bisa diterapkan. Delegates berperilaku seperti class dan struct. Secara default, mereka memiliki akses internal saat dinyatakan secara langsung dalam namespace, dan akses private saat nested.
Previous
Next Post »