2015-11-24 259 views
1

我想讓我的代碼更容易使用,這就是我正在嘗試的。訪問嵌套類

public class Engine 
{ 
    public class FileMgr 
    { 

    } 

} 

我可以訪問這個像Engine.FileMgr那好吧,但。

我想我在分離式文件中的類,所以我希望它這樣

public class Engine 
{ 
    public static FileMgr fileMgr; 

} 

public class FileMgr 
{ 

} 

,但我不能再訪問它像Engine.FileMgr

有沒有更好的方法來做到這一點?

+1

對不起,但是如何使用一個類名,就好像它是名稱空間的一部分,它可以讓事情更容易閱讀? –

+0

我看不到這一點。你現在可以像'FileMgr'那樣訪問它,而不需要'Engine.'部分。 – Nyerguds

+0

@Nyerguds OP想要訪問FileMgr類的fileMgr屬性而不是類本身...閱讀問題。順便說一句你應該能夠調用Enging.fileMgr,但你需要實例化它! – MajkeloDev

回答

1

您可以使Engine類變爲partial,並將FileMgr的詳細信息放入其中。

public partial class Engine 
{ 
    // Engine stuff here. 
} 

public partial class Engine 
{ 
    public class FileMgr 
    { 

    } 
} 
+0

這根本不可能讓這個黑客足夠下來。你已經採取了一個壞主意(通過公開一個子類來公開一個類的內部運作),然後你介紹了一個不必要的部分類的複雜性。這不好。 –

+0

@DavidArno OP沒有問是好還是壞。 OP問及如何去做。我向他/她展示瞭如何去做。 – CodingMadeEasy

1

父類型Engine現在是從Engine.FileMgr類的名稱中去掉,因爲它不再是一個子類的Engine。這就像它應該是。只需從類型名稱中刪除Engine.,然後設置。

如果你確實真的想要前綴類名,請在兩個文件中使用partialEngine

// Engine.cs 
public partial class Engine 
{ 
} 

// Engine.FileMgr.cs 
public partial class Engine 
{ 
    public class FileMgr 
    { 

    } 
} 
+0

哈哈哈哈。打我一秒鐘:)。 – CodingMadeEasy

+2

,因爲你寫了更多。;) –

+0

根本不可能對這個黑客足夠下注。你已經採取了一個壞主意(通過公開一個子類來公開一個類的內部運作),然後你介紹了一個不必要的部分類的複雜性。這不好。 –

-1

我不確定這是個好主意。

爲什麼不簡單地讓他們在同一個命名空間中的2個不同的類?

反正你可以做你想做的與partial關鍵字

這裏一個簡單的例子

public partial class Engine 
{ 
    //your Engine definitions here 
} 

,並在另一個文件

public partial class Engine 
{ 
    public class FileMgr 
    { 
     //Your FileMgr code here 
    } 
} 

但要知道,很多人會恨你如果你在生產代碼中這樣做沒有任何好處,因爲它在這裏出現

+0

這簡直不可能對這個黑客足夠的低估。你已經採取了一個壞主意(通過公開一個子類來公開一個類的內部運作),然後你介紹了一個不必要的部分類的複雜性。這不好。 –

+0

@DavidArno我知道這很糟糕,這正是我在最後一句話中所說的......我真的不明白這比其他答案更糟糕嗎? –

1

Engine.fileMgr現在是一個字段,不再是一個類型。所以你應該這樣使用它:

FileMgr fm = Engine.fileMgr;