internal (C# Başvurusu)
anahtar internal
sözcüğü, türler ve tür üyeleri için bir erişim değiştiricidir .
Bu sayfa erişimi kapsar
internal
. Anahtarinternal
sözcüğü de erişim değiştiricisininprotected internal
bir parçasıdır.
İç türler veya üyelere yalnızca aynı derlemedeki dosyalar içinde erişilebilir; örneğin:
public class BaseClass
{
// Only accessible within the same assembly.
internal static int x = 0;
}
Diğer erişim değiştiricileriyle karşılaştırması internal
için bkz . Erişilebilirlik Düzeyleri ve Erişim Değiştiricileri.
, assembly
bir veya daha fazla kaynak dosyanın derlenmesinden oluşturulan yürütülebilir veya dinamik bağlantı kitaplığıdır (DLL).
Derlemeler hakkında daha fazla bilgi için bkz . .NET'te derlemeler.
İç erişimin yaygın bir kullanımı bileşen tabanlı geliştirme aşamasındadır çünkü bir bileşen grubunun uygulama kodunun geri kalanına maruz kalmadan özel bir şekilde işbirliği yapmalarına olanak tanır. Örneğin, grafik kullanıcı arabirimleri oluşturmaya yönelik bir çerçeve, iç erişime sahip üyeleri kullanarak işbirliği yapacak ve Form
sınıflar sağlayabilirControl
. Bu üyeler iç olduğundan, çerçeveyi kullanan koda maruz kalmazlar.
İçinde tanımlandığı derleme dışında iç erişimi olan bir türe veya üyeye başvurmak bir hatadır.
Örnek 1
Bu örnekte ve Assembly1_a.cs
adlı iki dosya Assembly1.cs
bulunur. İlk dosya bir iç temel sınıf içerir: BaseClass
. İkinci dosyada örnek oluşturma BaseClass
girişimi bir hata oluşturur.
// 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
}
}
Örnek 2
Bu örnekte, 1 örneğinde kullandığınız dosyaların aynısını kullanın ve erişilebilirlik düzeyini BaseClass
olarak public
değiştirin. Ayrıca üyenin intM
erişilebilirlik düzeyini olarak internal
değiştirin. Bu durumda, sınıfın örneğini oluşturabilirsiniz, ancak iç üyeye erişemezsiniz.
// 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
}
}
C# Dil Belirtimi
Daha fazla bilgi için bkz. C# Dil Belirtimi'nde bildirilen erişilebilirlik. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.