Akadálymentességi tartomány (C#-referencia)
A tagok akadálymentességi tartománya határozza meg, hogy mely programszakaszokban lehet egy tagra hivatkozni. Ha a tag egy másik típusba van ágyazva, az akadálymentességi tartományt a tag kisegítő szintje és az azonnal tartalmazó típus akadálymentességi tartománya határozza meg.
A legfelső szintű típus akadálymentességi tartománya legalább annak a projektnek a programszövege, amelyben deklarálva van. Vagyis a tartomány tartalmazza a projekt összes forrásfájlját. A beágyazott típus akadálymentességi tartománya legalább annak a típusnak a programszövege, amelyben deklarálva van. Vagyis a tartomány a típus törzse, amely tartalmazza az összes beágyazott típust. A beágyazott típus akadálymentességi tartománya soha nem haladja meg a tartalomtípus akadálymentességi tartományát. Ezeket a fogalmakat az alábbi példában mutatjuk be.
Példa
Ez a példa egy legfelső szintű típust, T1
valamint két beágyazott osztályt M1
és M2
. Az osztályok különböző deklarált hozzáférési képességekkel rendelkező mezőket tartalmaznak. A metódusban egy Main
megjegyzés követi az egyes utasításokat az egyes tagok akadálymentességi tartományának jelzéséhez. Figyelje meg, hogy a nem elérhető tagokra hivatkozni próbáló állítások megjegyzésben jelennek meg. Ha egy elérhetetlen tagra való hivatkozás által okozott fordítóhibákat szeretné látni, távolítsa el egyenként a megjegyzéseket.
public class T1
{
public static int publicInt;
internal static int internalInt;
private static int privateInt = 0;
static T1()
{
// T1 can access public or internal members
// in a public or private (or internal) nested class.
M1.publicInt = 1;
M1.internalInt = 2;
M2.publicInt = 3;
M2.internalInt = 4;
// Cannot access the private member privateInt
// in either class:
// M1.privateInt = 2; //CS0122
}
public class M1
{
public static int publicInt;
internal static int internalInt;
private static int privateInt = 0;
}
private class M2
{
public static int publicInt = 0;
internal static int internalInt = 0;
private static int privateInt = 0;
}
}
class MainClass
{
static void Main()
{
// Access is unlimited.
T1.publicInt = 1;
// Accessible only in current assembly.
T1.internalInt = 2;
// Error CS0122: inaccessible outside T1.
// T1.privateInt = 3;
// Access is unlimited.
T1.M1.publicInt = 1;
// Accessible only in current assembly.
T1.M1.internalInt = 2;
// Error CS0122: inaccessible outside M1.
// T1.M1.privateInt = 3;
// Error CS0122: inaccessible outside T1.
// T1.M2.publicInt = 1;
// Error CS0122: inaccessible outside T1.
// T1.M2.internalInt = 2;
// Error CS0122: inaccessible outside M2.
// T1.M2.privateInt = 3;
// Keep the console open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
C# nyelvi specifikáció
További információkért lásd a C# nyelvi specifikációját. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: