2012-08-16 117 views
-4

可能重複:
Why Would I Ever Need to Use C# Nested Classes訪問嵌套類

我正在做的矮個子,我有一個類,它看起來像這樣:

namespace Blub { 
    public class ClassTest { 
     public void teest() { 
      return "test"; 
     } 

     public class AnotherTest { 
      public void blub() { 
       return "test"; 
      } 
     } 
    } 
} 

我可以可以像這樣訪問稱爲「teest」的函數,但是如何在不做另一個「新ClassTest.Another」的情況下訪問函數「blub」測試()」?

訪問的功能teest:

Blub.ClassTest = new Blub.ClassTest(); 
ClassTest.teest(); //test will be returned 

我嘗試(我怎麼想,就AnotherTest訪問是這樣的:

Blub.ClassTest = new Blub.ClassTest(); 
ClassTest.blub(); //test will be returned 

哪個不工作,我可以訪問AnotherTest這樣,我不想要它:

Blub.ClassTest2 = new Blub.ClassTest.AnotherTest(); 
ClassTest.blub(); //test will be returned 

有人知道這個解決方案嗎?

+2

一個相關的問題是下面的,應在瞭解嵌套類的好處幫助:http://stackoverflow.com/questions/1083032/why -would-i-ever-need-to-use-c-sharp-nested-class有效地,通過嵌套一個類,你正在做出一個關於何時構建該類以及誰有權訪問它的設計決策。 – dash 2012-08-16 17:41:02

回答

2

你聲明AnotherTestClassTest,這就是爲什麼你必須瀏覽它使用namespace.class.2ndClass了。

但是,我想你對OO概念並不是很瞭解,對嗎?如果您聲明一個類中的方法,它只能提供類的對象,除非你把它聲明爲static,什麼意思,這將是一個類方法而非實例方法

如果你想ClassTest有2種方法(teestblub)只需在類的主體同時聲明,如:

public class ClassTest 
{ 
    public string teest() 
    { 
     return "test"; 
    } 


    public string blub() 
    { 
     return "test"; 
    } 
} 

而且,請注意,如果一個方法聲明爲void它贏得」 t返回任何東西(實際上,我認爲你的原始代碼甚至不會編譯)。

我建議你在嘗試自己弄清楚之前先研究OO。

0

如果您需要訪問其他課程,則必須將其設置爲第一課程中的一個屬性。

namespace Blub { 
    public class AnotherTest { 
     public void blub() { 
      return "test"; 
     } 
    } 


    public class ClassTest { 
    public AnotherTest at = new AnotherTest(); 
    public void teest() { 
     return "test"; 
    } 


    } 
} 

然後訪問它是這樣的:

ClassTest x = new ClassTest(); 
x.at.blub();