2011-03-23 70 views
4

想知道什麼時候在C#中使用嵌套類是正確的? 我們是否有使用它的事件是不合理的,因此不正確?什麼時候我們在C#中使用嵌套類?

如果你能爲這兩個情況的例子 感謝

+0

你有一個嵌套類的例子嗎?鏈接? – 2011-03-23 09:12:02

回答

8

我覺得很方便,當你需要封裝數據的格式,主要是要在父類中使用使用嵌套類。這通常是因爲數據的目的或格式如此定製以至於不適合在您的解決方案中廣泛使用。

1

C#沒有辦法寫一個using指令瞄準一類,使類的靜態成員可以不用寫的類名作爲資格進行訪問(使用Java的import static比較,這確實允許)。

因此,對於您的類的用戶來說,如果您將任何公共類作爲名稱空間的直接成員,而不是嵌套在其他公共類中,則會更方便一些。這樣,他們可以用using指令將它們拉入全局命名空間。

對於私人類,堅持下去,最好把它們放在它們用來增強代碼可讀性的地方。

0

我不確定在我的世界中是否有嵌套類的空間。它只是模糊了我的設計。如果你需要隱藏類中的信息,爲什麼不把它存儲在成員變量中?

此外,如果不能在課堂上注入存根,測試會變得更加繁瑣。

+0

,因爲它並不總是你需要封裝的數據,否則結構就足夠了。如果你有一類汽車並且嵌套類是引擎,引擎需要具有諸如「Start()」之類的功能。 – 2011-03-23 09:43:55

+0

@布萊恩,但你爲什麼不考慮引擎一個正常的獨立類(這也正好是一個汽車的財產)?我可能只是愚蠢的,但我從來沒有經歷過嵌套類的需要。我通常會把Engine作爲一個財產或者讓Car實現IEngine接口。我知道可能有些情況下信息隱藏是必不可少的,但我沒有經歷過這些情況:-) – Morten 2011-03-23 09:53:26

+0

當然,引擎是內部的情況實際上取決於您的應用程序的範圍/上下文以及任何嵌套的實現上課可以說是個人偏好。 – 2011-03-23 10:05:21

0

嵌套類的用戶取決於下面的場景。

1)將代碼組織到兩個對象之間存在特殊關係的現實世界中。 2)在另一個類中隱藏一個類,這樣你就不希望內部類在它所創建的類的外部被使用。

假設你有2個班稱爲A和B類B取決於A類無A類,不能使用B類@那種情況下,你可以使用嵌套類

按我的知識

的DataRow類是數據表 嵌套類,即不能創建一個DataRow類,直到ü聲明DataTable類的對象

0

我發現兩個主要resons:

  1. 在不破壞它的情況下個性化一個班級的名字。
    例如:Vercas.ExplorerView,我在不破壞意義的情況下個性化我班的名字。

  2. 私人課程。
    示例:Vercas.ExplorerView.Item僅在Vercas.ExplorerView內部使用。

相關問題