2009-06-19 21 views

cevap

67

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'

+0

1 berraklığı olmalıdır. –

11

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ı

3

, bunlar iç sınıflar örnek