2009-03-04 20 views

回答

16

部分關鍵字通常用於代碼生成實用程序中,以允許開發人員向生成的代碼添加其他功能,而不用擔心如果代碼再次生成時該代碼被擦除。

使用C#3,可以將partial關鍵字應用於方法,以允許生成的代碼的用戶填充生成器留下的空白。例如,Linq To Sql設計器提供了部分方法,允許您將邏輯添加到框架在實現時調用的類中。這樣做的好處是,C#編譯器將完全刪除未實現的部分方法,因此沒有執行它們,因此在所有上都沒有性能。

部分類也可以用於將非常大的類組織成單獨的代碼文件,雖然這種用法通常表明您的類太大並且承擔了太多的責任。

1

我用它來分區助手類,其中一些方法需要大量的代碼。這是保持可讀性的一種簡單方法,因爲每個文件只處理類的一部分功能。

0

LINQ to SQL設計器廣泛使用它來分割映射類之外的自定義行爲(部分方法)。
簡而言之,它的主要用途是代碼生成器。
希望這會有所幫助。

1

在VB中,您可以使用它將「正常」代碼與需要通過「Option Strict Off」進行後期綁定的代碼分開。

在C#中,我只將它用於非常大的類。

2

我能想到的partial關鍵字的最佳用法是嵌套類。如果沒有partial關鍵字,則所有嵌套類必須與包含類位於相同的代碼文件中。

+0

Oo,絕妙的主意!我從未想過要這樣做。 – 2009-03-04 23:02:21

0

我一直使用Linq2Sql的部分類和方法。否則,除了UI /代碼隱藏類以外,我從未使用過它。

我喜歡關於linq2sql中的部分類的好處之一是,您可以讓部分類繼承一個接口,並將接口映射到生成的類。如果您擁有多個數據提供者並且仍然希望爲所有數據訪問類使用相同的接口,那麼這非常棒。

2

我發現的一種用法是,您可能不希望存在於生產代碼中的代碼,例如跟蹤或開發日誌代碼。你可以把它放在分部類中,然後當你做一個生產構建時,你只需構建沒有包含這些分部的東西,編譯器就會自動地魔術般去掉對那些被排除的部分的調用。

+0

部分方法可能對那個特定的用例更好。 – JasonTrue 2009-03-04 23:28:18

0

WPF廣泛使用部分類。 XAML生成可添加到的部分類。

0

當我知道我們將有幾個開發人員在一個類上工作時,我使用部分類來減少版本控制的合併痛苦。例如,我們經常將我們的DAL類拆分成幾個分部類文件。如果你不把它們放在不同的文件中,那麼很容易就會遇到合併衝突,在檢入版本ctl時需要一段時間才能修復。

當開發變得越來越混亂,因爲類接近完成,我們擺脫了部分文件。我們只是用它來使VC/mulit-developer問題更容易