Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vnořený typ je typ, který definujete v rámci třídy, struktury nebo rozhraní. Například:
public class Container
{
class Nested
{
Nested() { }
}
}
Bez ohledu na to, zda je vnější typ třída, rozhraní nebo struktura, vnořené typy jsou standardně privátní. Můžete k nim přistupovat pouze z typu, který je obsahuje. V předchozím příkladu externí typy nemají přístup ke Nested třídě.
Můžete také zadat modifikátor přístupu pro definování přístupnosti vnořeného typu následujícím způsobem:
Vnořené typy třídy můžou být veřejné, chráněné, interní, chráněné interní, soukromé nebo soukromé.
Definování
protected,protected internalneboprivate protectedvnořené třídy uvnitř zapečetěné třídy generuje upozornění kompilátoru CS0628, "nový chráněný člen deklarován v zapečetěné třídě."Mějte také na paměti, že externí viditelnost vnořeného typu porušuje pravidlo kvality kódu CA1034 "Vnořené typy by neměly být viditelné".
Vnořené typy struktury můžou být veřejné, interní nebo soukromé.
Následující příklad zpřístupňuje třídu Nested:
public class Container
{
public class Nested
{
Nested() { }
}
}
Vnořený nebo vnitřní typ může přistupovat k obsahujícímu, tedy vnějšímu typu. Chcete-li získat přístup k obsahujícímu typu, předejte ho jako argument do konstruktoru vnořeného typu. Například:
public class Container
{
public class Nested
{
private Container? parent;
public Nested()
{
}
public Nested(Container parent)
{
this.parent = parent;
}
}
}
Vnořený typ má přístup ke všem členům, které jsou přístupné pro daný typ. Má přístup k soukromým a chráněným členům typu, který je obsahuje, včetně všech zděděných chráněných členů.
V předchozí deklaraci je úplný název třídy NestedContainer.Nested. Toto je název použitý k vytvoření nové instance vnořené třídy následujícím způsobem:
Container.Nested nest = new Container.Nested();