Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een type dat in een klasse, struct of interface is gedefinieerd, wordt een genest type genoemd. Bijvoorbeeld
public class Container
{
class Nested
{
Nested() { }
}
}
Ongeacht of het buitenste type een klasse, interface of struct is, worden geneste typen standaard ingesteld op privé; ze zijn alleen toegankelijk vanuit hun type. In het vorige voorbeeld is de Nested
-klasse niet toegankelijk voor externe typen.
U kunt ook een toegangsaanpassing opgeven om de toegankelijkheid van een genest type te definiëren, als volgt:
Geneste typen van een klasse kunnen openbaar, beveiligd, intern, beveiligd intern, privé of privé zijn.
Als u echter een
protected
ofprotected internal
geneste klasse in eenprivate protected
definieert, genereert de compilerwaarschuwing CS0628, 'nieuw beveiligd lid dat is gedeclareerd in verzegelde klasse'.Houd er ook rekening mee dat het extern zichtbaar maken van een genest type de codekwaliteitsregel CA1034 "Geneste typen mogen niet zichtbaar zijn" schendt.
Geneste typen van een struct kunnen openbaar, intern of privé zijn.
In het volgende voorbeeld wordt de Nested
klasse openbaar:
public class Container
{
public class Nested
{
Nested() { }
}
}
Het geneste of binnenste type heeft toegang tot het omvatten, of buitenste, type. Als u toegang wilt krijgen tot het omvattende type, geeft u het als argument door aan de constructor van het geneste type. Voorbeeld:
public class Container
{
public class Nested
{
private Container? parent;
public Nested()
{
}
public Nested(Container parent)
{
this.parent = parent;
}
}
}
Een genest type heeft toegang tot alle leden die toegankelijk zijn voor het bijbehorende type. Het kan toegang krijgen tot privé- en beschermde leden van het omvattende type, inclusief alle geërfde beschermde leden.
In de vorige verklaring is de volledige naam van klasse Nested
Container.Nested
. Dit is de naam die wordt gebruikt om een nieuw exemplaar van de geneste klasse te maken, als volgt:
Container.Nested nest = new Container.Nested();