2010-06-02 29 views
10

sınıfındaki dış sınıf nesnelere erişebilirim Bunun gibi üç sınıfa sahibim.İç sınıftaki

class A 
{ 
    public class innerB 
     { 
     //Do something 
     } 

    public class innerC 
     { 
     //trying to access objB here directly or indirectly over here. 
     //I dont have to create an object of innerB, but to access the object created by A 
     //i.e. 
      innerB objInnerB = objB; 
     //not like this 
      innerB objInnerB= new innerB(); 
     } 

private innerB objB{get;set;} **//Private** 

public A() 
    { 
    objB= new innerB(); 
    } 
} 

Ben A sınıfı tarafından oluşturulan Sınıf C sınıfı B nesneyi erişmek istediğiniz o Sınıf C. A sınıfı nesne üzerinde değişiklik yapma nasılsa mümkün mü Can i tarafından Sınıf A'nın nesneyi almak etkinlik oluşturma veya bir şekilde.

Düzeltme: Yukarıdaki soruyu sormamdaki hatam. A oluşturulan B'nin Nesne kamu

MÜMKÜN I Sınıf A tarafından işlenebilir bir olayı yükseltmek mümkün hale nasıl olsa takdirde OLAY

OLUŞTURMA TARAFINDAN BU YAPMAK IS değil özeldir, sonra benim sorun olabilir çözüldü.

+3

Kodun çoğunu orada yazdığınızdan beri ... neden sadece Visual Studio'ya döküp kendiniz için denemiyorsunuz? –

+0

@Justin: Ur yardım için Thx, zaten bunu VS'de yapmaya çalışıyorum. Şimdiki 100 satır kodumu, şu anki durumda istediğimi özetledim. Herhangi bir çözüm bulursanız lütfen öneriniz. Etkinliğimdeki bir nesneyi başka bir sınıf tarafından yükseltilmekte ve içeride yakalanmakta olan iç mekan –

cevap

15

Eğer doğru bir şekilde okuyorsam, A sınıfının objB özelliği ile birlikte geçerek içeriden geçiş yapabilirsiniz. C# nested classes are like C++ nested classes, not Java inner classes

Eğer innerC gelen A.objB erişmek istiyorsanız o zaman nasılsa innerC için A sınıfı geçmek zorunda olacak:

Bu, bu makalede açıklandığı gibi C# iç sınıflar, işe nasıl.

+12

Veli girişinde bulunmanız gerekir (çünkü "dış" anahtar kelimesi yok), ancak iç sınıf ** özel üyelere erişebilir ** ebeveyn – dbkk

+0

Downvote için teşekkürler. Ayrıca yanılıyorsun. –

+2

C# derleyicisine sorun: [örnek kod] (http://pastebin.com/HwA6F2Ee). – dbkk

-1

B sınıfınız C sınıfı ile aynı kapsamda olduğundan, yani A sınıfı içinde, iç içe tip B'yi iç içe tip C'den başlatabilir ve kullanabilirsiniz. Sonra da InnerClass yöntemlerinin tümünde olduğu başvuru kullanabilirsiniz

public class OuterClass 
{ 
    //OuterClass methods 

    public class InnerClass 
    { 
     private OuterClass _outer; 

     public InnerClass(OuterClass outer) 
     { 
      _outer = outer; 
     } 
    } 
} 

:

+0

'da bulmam gerekiyor. Sanırım aradığı şey bu değil - eğer onu okuyorsam, objB özelliğine erişmek istiyor A sınıfı içten içe geçmeden A sınıfı. –

7

Sen gibi belki yapıcısındaki, InnerClass için OuterClass bir başvuru geçmesi gerekiyor.

+0

Bunu, C sınıfı nesnelerin koleksiyonunu içeren B sınıfında tanıtıcısı belirlenmiş bir kullanıcı denetimi tarafından yükseltilen bir olayda yapmaya çalışıyorum. –

+0

Etkinlik argümanlarınız, ihtiyacınız olan nesneye bir referans tutabilir mi? – dlras2

+0

Bu olay sanki C Sınıfı koleksiyonunu içeren B Sınıfı tarafından tutulan Koleksiyon tarafından tekrar bağlanan bir kullanıcı kontrolü tarafından yükseltildiğinden, sanmıyorum. Bunun şu anda biraz kafa karıştırıcı olduğunu biliyorum. –

İlgili konular