Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az osztályon, szerkezeten vagy interfészen belül definiált típusokat beágyazott típusnak nevezzük. Például
public class Container
{
class Nested
{
Nested() { }
}
}
Függetlenül attól, hogy a külső típus egy osztály, interfész vagy struktúra, a beágyazott típusok alapértelmezés szerint privátak; csak a bennük található típusból érhetők el. Az előző példában a Nested osztály nem érhető el külső típusok számára.
A beágyazott típus akadálymentességének meghatározásához megadhat egy hozzáférési módosítót is, az alábbiak szerint:
Az osztály beágyazott típusai lehetnek nyilvános, védett, belső, védett belső, privát vagy privát védelem.
Ha azonban egy
protectedbelül definiál egyprotected internal,private protectedvagy beágyazott osztályt, az "új védett tag deklarált lezárt osztályban" CS0628 fordítói figyelmeztetést generál.Vegye figyelembe azt is, hogy a beágyazott típus külső láthatóvá tétele sérti a CA1034 kódminőségi szabályt,"A beágyazott típusok nem lehetnek láthatók".
A strukturált szerkezetek beágyazott típusai lehetnek nyilvánosak, belsők vagy privátak.
Az alábbi példa nyilvánossá teszi a Nested osztályt:
public class Container
{
public class Nested
{
Nested() { }
}
}
A beágyazott vagy belső típus hozzáférhet a benne lévő vagy külső típushoz. A tartalmazó típus eléréséhez adja át argumentumként a beágyazott típus konstruktorának. Például:
public class Container
{
public class Nested
{
private Container? parent;
public Nested()
{
}
public Nested(Container parent)
{
this.parent = parent;
}
}
}
A beágyazott típus hozzáféréssel rendelkezik az összes olyan taghoz, amely elérhető a benne található típushoz. Hozzáférhet az adott típusú magán- és védett tagokhoz, beleértve az örökölt védett tagokat is.
Az előző deklarációban az osztály Nested teljes neve Container.Nested. Ez a név a beágyazott osztály új példányának létrehozásához használatos, az alábbiak szerint:
Container.Nested nest = new Container.Nested();