internal (Referensi C#)
Kata kunci internal
adalah pengubah akses untuk jenis dan anggota jenis.
Halaman ini mencakup akses
internal
. Kata kunciinternal
juga merupakan bagian dari pengubah aksesprotected 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk