C 部分類與部分方法

2022-02-08 23:05:35 字數 2439 閱讀 8839

部分類也可以定義部分方法。部分方法在部分類中定義,但沒有方法體,在另乙個部分類中執行。在這兩個部分類中,都要使用partial關鍵字。

public

partial

class

myclass

public

partial

class

myclass

}

部分方法也可以是靜態的,但它們總是私有的,且不能有返回值。它們使用的任何引數都不能是out引數,但可以是ref引數。部分方法還不能使用virtual、abstract、override、new、sealed和extern修飾符。

有了這些限制,就不太容易看出部分方法的作用了。實際上,部分方法在編譯**時非常重要,其用法倒並不重要。考慮下面的**:

public

partial

class

myclass

}public

partial

class

myclass

}

這段**定義了部分方法dosomethingelse,在第乙個部分類中定義,在第二個部分類中執行。在控制台應用程式中呼叫dosomething時,輸出如下所示:

dosomething() execution started.

dosomethingelse() called.

dosomething() execution finished.

如果刪除第二個部分類定義,或者刪除部分方法的全部執行**(注釋掉**),輸出就如下所示:

dosomething() execution started.

dosomething() execution finished.

讀者可能認為,呼叫dosomethingelse時,執行庫發現該方法沒有執行**,因此會繼續執行下一行**。但實際上,編譯**時,如果**包含乙個

沒有執行**的部分方法,編譯器會完全刪除該方法,還會刪除對該方法的所有呼叫。執行**時,不會檢查執行**,因為沒有檢查方法的呼叫。這會略微提高性

能。與部分類一樣,在定製自動生成的**或設計器建立的**時,部分方法是很有用的。設計器會宣告部分方法,使用者根據具體情形選擇是否執行它。如果不執行它,就不會影響效能,因為該方法在編譯過的**中不存在。

現在考慮為什麼部分方法不能有返回型別。如果可以回答這個問題,就可以確保完全理解了這個主題,我們將此留作練習。

部分類也可以定義部分方法。部分方法在部分類中定義,但沒有方法體,在另乙個部分類中執行。在這兩個部分類中,都要使用partial關鍵字。

public

partial

class

myclass

public

partial

class

myclass

}

部分方法也可以是靜態的,但它們總是私有的,且不能有返回值。它們使用的任何引數都不能是out引數,但可以是ref引數。部分方法還不能使用virtual、abstract、override、new、sealed和extern修飾符。

有了這些限制,就不太容易看出部分方法的作用了。實際上,部分方法在編譯**時非常重要,其用法倒並不重要。考慮下面的**:

public

partial

class

myclass

}public

partial

class

myclass

}

這段**定義了部分方法dosomethingelse,在第乙個部分類中定義,在第二個部分類中執行。在控制台應用程式中呼叫dosomething時,輸出如下所示:

dosomething() execution started.

dosomethingelse() called.

dosomething() execution finished.

如果刪除第二個部分類定義,或者刪除部分方法的全部執行**(注釋掉**),輸出就如下所示:

dosomething() execution started.

dosomething() execution finished.

讀者可能認為,呼叫dosomethingelse時,執行庫發現該方法沒有執行**,因此會繼續執行下一行**。但實際上,編譯**時,如果**包含乙個

沒有執行**的部分方法,編譯器會完全刪除該方法,還會刪除對該方法的所有呼叫。執行**時,不會檢查執行**,因為沒有檢查方法的呼叫。這會略微提高性

能。與部分類一樣,在定製自動生成的**或設計器建立的**時,部分方法是很有用的。設計器會宣告部分方法,使用者根據具體情形選擇是否執行它。如果不執行它,就不會影響效能,因為該方法在編譯過的**中不存在。

現在考慮為什麼部分方法不能有返回型別。如果可以回答這個問題,就可以確保完全理解了這個主題,我們將此留作練習。

部分類 匿名類

部分類 關鍵字 partial 把乙個類的 拆開幾個部分,每部分在乙個cs檔案,編譯時再合在一起。parclass1.cs partial class circle public circle int initialradius parclass2.cs partial class circle 部...

部分型別轉換

dynamic cast 通常在基類和派生類之間轉換時使用,run time cast。const cast 主要針對const和volatile的轉換。static cast 一般的轉換,no run time check.通常,如果你不知道該用哪個,就用這個。reinterpret cast 用...

C 技巧與解析 部分

designmode 以下專案在設計器介面,需判斷designmode 自定義控制項中需要特殊方法進行判斷,如下 public partial class ctl control protected override void onpaint painteventargs pe protected ...