Bagikan melalui


internal (Referensi C#)

Kata kunci internal adalah pengubah akses untuk jenis dan anggota jenis.

Halaman ini mencakup akses internal. Kata kunci internal juga merupakan bagian dari pengubah akses protected internal.

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 lebih lanjut tentang rakitan, lihat Perakitan di .NET.

Penggunaan umum dari akses internal adalah dalam pengembangan berbasis komponen karena memungkinkan grup komponen untuk bekerja sama secara privat tanpa terkena sisa kode aplikasi. Misalnya, kerangka kerja untuk membangun antarmuka pengguna grafis dapat menyediakan kelas Control dan Form yang bekerja sama dengan menggunakan anggota dengan akses internal. Karena anggota ini internal, mereka tidak terekspos kode yang menggunakan kerangka kerja.

Ini merupakan kesalahan untuk mereferensikan jenis atau anggota dengan akses internal di luar rakitan tempat didefinisikan.

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 BaseClass menjadi public. 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 di Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.

Lihat juga