internal (C# Başvurusu)
internalAnahtar sözcüğü, türler ve tür üyeleri için bir erişim değiştiricisidir .
Bu sayfa
internalerişimi içerir.internalAnahtar sözcüğü ayrıcaprotected internalerişim değiştiricisinin bir parçasıdır.
İç türlere veya üyelere, bu örnekte olduğu gibi, yalnızca aynı derlemede bulunan dosyalar içinde erişilebilir:
public class BaseClass
{
// Only accessible within the same assembly.
internal static int x = 0;
}
internalDiğer erişim değiştiricilerine kıyasla, bkz. Erişilebilirlik düzeyleri ve erişim değiştiricileri.
Derlemeler hakkında daha fazla bilgi için bkz. .net 'Teki derlemeler.
İç erişimin yaygın olarak kullanılması bileşen tabanlı geliştirmede olduğundan, bir grup bileşenin, uygulama kodunun geri kalanında gösterilmeksizin özel bir biçimde birlikte çalışabilmesine olanak sağlar. Örneğin, grafik kullanıcı arabirimleri oluşturmaya yönelik bir çerçeve, Control Form iç erişimi olan üyeleri kullanarak birlikte çalışan sınıflar sağlayabilir ve sınıflardır. Bu Üyeler iç olduğundan, Framework kullanan koda gösterilmez.
Bir tür ya da bir üyeye, tanımlandıkları derlemenin dışında iç erişimle başvurulmaları hatadır.
Örnek 1
Bu örnek, ve olmak üzere iki dosya içerir Assembly1.cs Assembly1_a.cs . İlk dosya, bir iç temel sınıf içerir BaseClass . İkinci dosyada, örnek oluşturma girişimi BaseClass 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, örnek 1 ' de kullandığınız dosyaları kullanın ve erişilebilirlik düzeyini BaseClass olarak değiştirin public . Ayrıca üyenin erişilebilirlik düzeyini de değiştirin intM internal . Bu durumda, sınıfını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 belirtiminde Erişilebilirlik bildirimi . Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.