Dela via


Kapslade typer (programmeringsguide för C#)

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 Nested är klassen otillgä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:

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 medlemmar 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 Container.Nesteddet fullständiga namnet på klassen 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();

Se även