2009-09-18 43 views
13

我在問這個,因爲我發現分發類定義是一個相當危險的特性,所以如果你知道它的全部內容,你無法真正確定。即使我找到三個部分定義,我怎麼知道這裏沒有第四個地方?C# - 「部分」類有什麼好處?

我是新的C#,但已經花了10年,C++,也許這就是爲什麼我動搖了?

無論如何,「部分」的概念必須有一些很大的好處,我明顯缺少。我很想了解更多關於它背後的哲學。

編輯:對不起,錯過this duplicate當搜索現有的職位。

+0

「我怎麼知道沒有第四個地方?」 這裏的問題不是部分類,而是缺乏對正在編譯的項目的瞭解。 – mackenir 2009-09-18 09:57:15

+0

http://stackoverflow.com/questions/612831/practical-usage-of-partial-keyword-in-c – 2009-09-18 10:15:16

+0

@mackenir:嘗試將該參數與分配給100000多行代碼項目的維護開發人員進行比較。 – sharkin 2009-09-18 13:53:38

回答

31

部分類在使用代碼生成時非常方便。如果你想修改一個生成的類(而不是從它繼承),那麼當代碼重新生成時,你可能會冒失去更改的風險。如果你能夠在一個單獨的文件中定義你的額外方法等,這個類的生成的部分可以重新創建,而不需要加上手工製作的代碼。

+2

+ 1 - 事實上,Visual Studio附帶的表單構建器工具使用了這一特性。 – ConcernedOfTunbridgeWells 2009-09-18 10:02:11

11

最大的好處是隱藏計算機生成的代碼(由設計者)。
Eric Lippert最近有一篇關於partial-keyword的博客文章。

另一個用法是給嵌套類自己的文件。

3

兩個人編輯同一個班級,並自動生成的設計器代碼是兩個直接的功能,我可以看到,被部分的類和方法解決。

有設計師在一個單獨的文件中生成的代碼是很多更容易比1.1,在那裏你的代碼可以通常可以通過Visual Studio的錯位(在Windows窗體)一起工作。

Visual Studio仍然使設計器文件,代碼背後和設計文件與ASP.NET同步混亂。

+0

編輯同一類的兩個人應該使用版本控制,而不是部分類。 – svinto 2009-09-18 10:04:22

+0

或者兩者兼而有之,如果它是一些擁有1000行代碼的巨大遺留類,則可以節省合併頭痛。 – 2009-09-18 10:14:17

+0

我並不是建議這是正確的工作方式,但這是部分類背後的想法之一:http://msdn.microsoft.com/en-us/library/wa80x488(VS.80).aspx – 2009-09-18 10:20:12

3

的另一點是,當一個類實現多個接口,你可以指出錯誤文件分割的接口實現。

所以每個代碼文件只有屬於接口實現的代碼。它根據分離關注的概念。

2

如果你有某種荒謬的大班,由於某種原因不能或不允許在邏輯上分裂成更小的類,那麼你可以將它們至少在物理分解成多個文件,以便更有效地與它的工作的。本質上,您可以一次查看小塊,避免上下滾動。

這可能適用於可能是由於一些神祕的政策是不允許亂用,因爲紛繁根深蒂固的依賴現有的API遺留代碼。

不一定是最好的使用部分類的,但肯定給你一個備用選項組織代碼,您可能無法以其他方式修改。

1

也許爲時已晚,但請讓我補充我的2美分太:

*。當工作在大型項目中,在不同的文件中傳播的一類允許多個程序員同時在它的工作。

*。您可以輕鬆地爲VS.NET生成的類編寫代碼(用於擴展功能)。這將允許您編寫自己需要的代碼,而不會混淆系統生成的代碼