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 . Anahtar internal sözcüğü de erişim değiştiricisinin protected 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.csadlı 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 publicdeğiştirin. Ayrıca üyenin intM erişilebilirlik düzeyini olarak internaldeğ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.

Ayrıca bkz.