belső (C# referencia)

A internal kulcsszó a típus- és típustagok hozzáférési módosítója .

Ez a lap a hozzáférést ismerteti internal . A internal kulcsszó a hozzáférési módosító része protected internal is.

A belső típusok vagy tagok csak ugyanabban a szerelvényben lévő fájlokon belül érhetők el, mint ebben a példában:

public class BaseClass
{  
    // Only accessible within the same assembly.
    internal static int x = 0;
}  

A többi hozzáférési módosítóval való összehasonlítást internal lásd : Akadálymentességi szintek és hozzáférési módosítók.

Az An assembly egy végrehajtható vagy dinamikus csatolási kódtár (DLL), amely egy vagy több forrásfájl összeállításából származik.

További információ a szerelvényekről: Szerelvények a .NET-ben.

A belső hozzáférés gyakori használata az összetevőalapú fejlesztésben van, mivel lehetővé teszi, hogy az összetevők egy csoportja privát módon működjön együtt anélkül, hogy az alkalmazás kódjának többi része ki lenne téve. A grafikus felhasználói felületek létrehozására szolgáló keretrendszer például olyan osztályokat biztosíthat Control , Form amelyek belső hozzáféréssel rendelkező tagok használatával működnek együtt. Mivel ezek a tagok belsőek, nem lesznek kitéve a keretrendszert használó kódnak.

Hiba egy olyan típusra vagy tagra hivatkozni, amely belső hozzáféréssel rendelkezik azon a szerelvényen kívül, amelyen belül definiálták.

1. példa

Ez a példa két fájlt Assembly1.cs és Assembly1_a.cs. Az első fájl egy belső alaposztályt tartalmaz. BaseClass A második fájlban a példányosítási BaseClass kísérlet hibát fog eredményezni.

// 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  
   }  
}  

2. példa

Ebben a példában használja ugyanazokat a fájlokat, amelyeket az 1. példában használt, és módosítsa a kisegítő lehetőségek szintjét BaseClasspublic. A tag intM akadálymentességi szintjét is módosítsa a következőre internal: . Ebben az esetben példányosíthatja az osztályt, de nem férhet hozzá a belső taghoz.

// 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# nyelvi specifikáció

További információ: Deklarált akadálymentesség a C# nyelvi specifikációjában. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.

Lásd még