Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sınıf, yapı veya arabirim içinde tanımlanan bir tür iç içe geçmiş tür olarak adlandırılır. Örneğin:
public class Container
{
class Nested
{
Nested() { }
}
}
Dış türün bir sınıf, arabirim veya yapı olmasına bakılmaksızın, iç içe türler varsayılan olarak özeldir; yalnızca kendi içeren türlerinden erişilebilir. Önceki örnekte, Nested
sınıfı dış türler için erişilemez.
İç içe bir türün erişilebilirliğini tanımlamak için aşağıdaki gibi bir erişim değiştirici de belirtebilirsiniz:
Bir sınıfın iç içe türleri genel, korumalı, iç, korumalı iç, özel veya özel korumalı olabilir.
Ancak, mühürlü bir
protected
sınıfın içinde birprotected internal
veyaprivate protected
iç içe sınıf tanımlamak, "mühürlü sınıfta bildirilen yeni korumalı üye" derleyici uyarısı CS0628 oluşturur.Ayrıca iç içe türü dışarıdan görünür hale getirmenin CA1034 "İç içe türler görünür olmamalıdır" kod kalitesi kuralını ihlal ettiğini unutmayın.
Aşağıdaki örnek, Nested
sınıfını genelleştirir:
public class Container
{
public class Nested
{
Nested() { }
}
}
Gömülü veya iç tür, dış veya kaplayan türüne erişebilir. İçeren türe erişmek için, bunu iç içe türün oluşturucusunun bağımsız değişkeni olarak geçirin. Örneğin:
public class Container
{
public class Nested
{
private Container? parent;
public Nested()
{
}
public Nested(Container parent)
{
this.parent = parent;
}
}
}
İç içe yerleştirilmiş bir türün, içeren türü için erişilebilir olan tüm üyelere erişimi vardır. İçerdiği türün özel ve korumalı üyelerine, devralınan korumalı üyeler de dahil olmak üzere, erişebilir.
Önceki bildirimde, sınıf Nested
tam adı Container.Nested
. Bu, iç içe sınıfın yeni bir örneğini oluşturmak için aşağıdaki gibi kullanılan addır:
Container.Nested nest = new Container.Nested();