2012-11-02 16 views
5

ObjectA varsa ve özel bir yöntem GetPrice() varsa ve aynı türden bir "ana" alan varsa, üst örnekte alt örnekte GetPrice() arayayım?Neden bu türün dışında aynı türden başka bir özel durum örneğini arayabilirim?

Örnek: "Diğer örneklerini erişilemez" değil "Diğer türlerinde erişilemez"

private decimal GetPrice() 
{ 
    ObjectA parent = Parent; 

    if(parent != null) 
    { 
     return parent.GetPrice(); // Why is this OK? 
    } 

    return 0; 
} 
+1

örnekleri dil tasarımcıları bu şekilde çalışması gerekir sanıyordum için? –

cevap

12

özel araçlarla çünkü. private kapsamı sınıf değil, örneği sınırlıdır

+2

Teşekkürler ... 5 yıl içinde C# programlama yapıyorum, bunu hiç fark etmedim. Sanırım C# 'nin erişim düzenleyicilerini öğrendiğim andan itibaren, bunu örnek olarak özel olarak kabul ettim. Şimdi bir aptal gibi hissediyorum. Her gün bir şeyler öğrenmek! – Thelonias

+0

@Ryan, Ne demek istediğini biliyorum ... Sanırım bu uzun süredir "yanlış anlayabileceğiniz" şeylerden biri. Ve temel olarak, düşündüğünüz gibi davrandığınız gibi, aslında başka bir kişinin özel üyesine erişmeyi * deneyip, izin verdiğinin farkına varıncaya kadar :) – Astrotrain

6

için C# spec de tanımlandığı gibi

1.6.2 Erişilebilirlik bir sınıfın her elemanı kontrol ilişkili bir erişilebilirlik, var üyeye erişebilen program metni bölgeleri. , beş olası erişilebilirlik şeklidir. Bunlar aşağıdaki tablodaki 'da özetlenmiştir.

 
Accessibility  Meaning 

public    Access not limited 
protected   Access limited to this class or classes derived from this class 
internal   Access limited to this program 
protected internal Access limited to this program or classes derived from this class  
private    Access limited to this class 
1

bir erişim değiştirici sınıf uygulama var bununla ilgilidir/yazın değil, bu sınıfın

İlgili konular