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.
Kata internal kunci adalah pengubah akses untuk jenis dan jenis anggota.
Halaman ini mencakup akses
internal. Katainternalkunci juga merupakan bagian dari pengubahprotected internalakses.
Jenis internal atau anggota hanya dapat diakses dalam file dalam rakitan yang sama, seperti dalam contoh ini:
public class BaseClass
{
// Only accessible within the same assembly.
internal static int x = 0;
}
Untuk perbandingan internal dengan pengubah akses lainnya, lihat Tingkat Aksesibilitas dan Pengubah Akses.
assembly adalah pustaka tautan yang dapat dieksekusi atau dinamis (DLL) yang dihasilkan dari mengkompilasi satu atau beberapa file sumber.
Untuk informasi selengkapnya tentang rakitan, lihat Rakitan di .NET.
Penggunaan umum akses internal adalah dalam pengembangan berbasis komponen karena memungkinkan sekelompok komponen untuk bekerja sama secara privat tanpa diekspos ke sisa kode aplikasi. Misalnya, kerangka kerja untuk membangun antarmuka pengguna grafis dapat menyediakan Control kelas dan Form yang bekerja sama dengan menggunakan anggota dengan akses internal. Karena anggota ini bersifat internal, mereka tidak terekspos ke kode yang menggunakan kerangka kerja.
Ini adalah kesalahan untuk mereferensikan jenis atau anggota dengan akses internal di luar rakitan di mana itu ditentukan.
Contoh 1
Contoh ini berisi dua file, Assembly1.cs dan Assembly1_a.cs. File pertama berisi kelas dasar internal, BaseClass. Di file kedua, upaya untuk membuat instans BaseClass akan menghasilkan kesalahan.
// Assembly1.cs
// Compile with: /target:library
internal class BaseClass
{
public static int intM = 0;
}
// Assembly1_a.cs
// Compile with: /reference:Assembly1.dll
class TestAccess
{
static void Main()
{
var myBase = new BaseClass(); // CS0122
}
}
Contoh 2
Dalam contoh ini, gunakan file yang sama dengan yang Anda gunakan dalam contoh 1, dan ubah tingkat aksesibilitas menjadi BaseClasspublic. Ubah juga tingkat aksesibilitas anggota intM menjadi internal. Dalam hal ini, Anda dapat membuat instans kelas, tetapi Anda tidak dapat mengakses anggota internal.
// Assembly2.cs
// Compile with: /target:library
public class BaseClass
{
internal static int intM = 0;
}
// Assembly2_a.cs
// Compile with: /reference:Assembly2.dll
public class TestAccess
{
static void Main()
{
var myBase = new BaseClass(); // Ok.
BaseClass.intM = 444; // CS0117
}
}
Spesifikasi Bahasa C#
Untuk informasi selengkapnya, lihat Aksesibilitas yang dinyatakan dalam Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.