Bir sınıf, .NET'de korunabilir mi?
Neden/bu mümkün değil?.NET'te Korunan Sınıflar
cevap
Evet, sadece onları üst düzey sınıfları, onlar iç sınıflar
public class Outer
{
protected class Foo
{
}
}
Bu gayet olmalı yapamaz, sadece sınıflar
class X
{
// 'Outer.Foo' is inaccessible due to its protection level
private void Flibble(Outer.Foo foo)
{
}
}
class X : Outer
{
// fine
private void Flibble(Outer.Foo foo)
{
}
}
Outer
alt sınıfları Foo görmesine izin anlamına gelir
Dış düzey sınıflar için erişim değiştirici, diğer derlemeler ile ilgili olarak görünürlüğünü tanımladığından, herhangi bir dış sınıfı özel, korunan (veya korunan dahili) olarak bildiremeyeceğinizi unutmayın. Sadece montajda (veya InternalsVisibleTo üzerinden arkadaşlara) veya montajın dışında görünür. genel/iç tanımlayıcılar tutarlılık için kullanılır Bu durumda iken
gerçekten IL durum sadece 'Açık' ya da 'kamuya açık olmayan'
protected
görüş 'türetilmiş sınıfları için görünür işaret etmek için kullanılmaktadır (Reflection.Emit flags show gibi) '. Bu, bir sınıf içindeki şeyleri anlamlandırır, ancak normalde sınıf seviyesinde bir anlamı yoktur.
Bunun tek istisnası, korunan görünürlüğün türetilmiş sınıfların iç sınıfa erişebileceği anlamına geldiği bir iç sınıftır. Evet, biz de yapamaz onları üst düzey sınıfları
, bunlar iç sınıflar örnek
1 berraklığı olmalıdır. –