1. 程式人生 > >C#部分方法不能有返回型別

C#部分方法不能有返回型別

C#部分方法又叫分部方法。部分方法在一個部分類中定義(沒有方法體),在另一個部分類中實現。兩個部分類中,都要使用partial關鍵詞。 部分方法可以是靜態的,但總是私有的,且不能有返回值。使用的任何引數都不能是out引數,但可以是ref 引數。部分方法也不能使用virtual、abstract、override、new、seale和extern修飾符。
public partial class MyClass { partial void MyPartialMethod(); } public partial class MyClass { partial void MyPartialMethod() { //Method implementation } }
關於為什麼部分方法不能有返回值,以下來自網友回答,相對來說能認同的一個回答,但最後一句明顯有錯誤。
“分部方法”的引入完全是為了程式碼注入的需要同時保持程式碼的高效。 比如說: partial void OnBefore(string s); partial void OnAfter(string s); ... void SomeFunction() {     OnBefore(...);     業務程式碼;     OnAfter(...); } 這是一個典型的場景,作為API的設計者,我們希望給呼叫它的程式設計師一個添加註入程式碼(比如許可權審查、除錯輸出、或者日誌等行為)的機會。 如果沒有分部方法,那麼OnBefore和OnAfter始終會被呼叫,哪怕這兩個方法是空的。 有了分部方法,如果程式設計師不去寫這兩個方法,那麼編譯器會自動刪除SomeFunction中的第一行和最後一行。 我們想想,如果這個分部方法是有返回值的,那麼難保SomeFunction的編寫者會寫出這樣的程式碼: int result = OnBefore(...); ... 此時我們還能去掉這一行麼?如果去了,那result哪裡出呢? 一樣的道理,out ref相當於給返回值,所以也被禁止。