Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En typ som definierats i en klass, en struct eller ett gränssnitt kallas för en kapslad typ. Till exempel
public class Container
{
    class Nested
    {
        Nested() { }
    }
}
Oavsett om den yttre typen är en klass, ett gränssnitt eller en struct, är kapslade typer som standard privata. de är endast tillgängliga från deras innehållande typ. I föregående exempel är klassen Nested inte tillgänglig för externa typer.
Du kan också ange en åtkomstmodifierare för att definiera tillgängligheten för en kapslad typ enligt följande:
- Kapslade typer av en klass kan vara offentliga, skyddade, interna, skyddade interna, privata eller privata. - Men att definiera en - protected,- protected internaleller- private protectedkapslad klass i en förseglad klass genererar kompilatorvarning CS0628, "ny skyddad medlem deklarerad i förseglad klass".- Tänk också på att göra en kapslad typ externt synlig bryter mot kodkvalitetsregeln CA1034 "Kapslade typer bör inte vara synliga". 
- Kapslade typer av en struct kan vara offentliga, interna eller privata. 
I följande exempel blir Nested-klassen offentlig:
public class Container
{
    public class Nested
    {
        Nested() { }
    }
}
Den kapslade eller inre typen kan komma åt den innehållande, eller yttre, typen. Om du vill komma åt den innehållande typen skickar du den som ett argument till konstruktorn av den kapslade typen. Till exempel:
public class Container
{
    public class Nested
    {
        private Container? parent;
        public Nested()
        {
        }
        public Nested(Container parent)
        {
            this.parent = parent;
        }
    }
}
En kapslad typ har åtkomst till alla medlemsvariabler som är tillgängliga för dess innehållande typ. Den kan komma åt privata och skyddade medlemmar av den innehållande typen, inklusive ärvda skyddade medlemmar.
I föregående deklaration är det fullständiga namnet på klassen NestedContainer.Nested. Det här är namnet som används för att skapa en ny instans av den kapslade klassen enligt följande:
Container.Nested nest = new Container.Nested();