C partial 關鍵字詳解

2021-06-06 13:06:57 字數 2093 閱讀 4572

1

public

partial

class

form1 : form27

}為什麼新建立的

winows form

的類定義成了乙個部分類。我們開啟

form1.designer.cs

檔案,可以看到,原來

form1

的另一部分類是在這個檔案中設計的。這個部分類中定義了我們使用的控制項、事件委託以及如

dispose

方法等。因為這裡面的**都是自動生成的,因此設計成了乙個部分類。

partial

是區域性型別的意思。

允許我們將乙個類、結構或介面分成幾個部分,分別實現在幾個不同的

.cs檔案中。

c#編譯器在編譯的時候仍會將各個部分的區域性型別合併成乙個完整的類

區域性型別適用於以下情況:

(1)

型別特別大,不宜放在乙個檔案中實現。

(2)

乙個型別中的一部分**為自動化工具生成的**,不宜與我們自己編寫的**混合在一起。

(3)

需要多人合作編寫乙個類。

區域性型別的限制

(1)

區域性型別只適用於類、介面、結構,不支援委託和列舉。

(2)

同乙個型別的各個部分必須都有修飾符partial。

(3)

使用區域性型別時,乙個型別的各個部分必須位於相同的命名空間中。

(4)

乙個型別的各個部分必須被同時編譯。

3.區域性型別的注意點

(1)

關鍵字partial是乙個上下文關鍵字,只有和class、struct、inte***ce 放在一起時才有關鍵字的含義。因此partial的引入不會影響現有**中名稱為partial的變數。

(2)

區域性型別的各個部分一般是分開放在幾個不同的.cs檔案中,但c#編譯器允許我們將他們放在同一檔案中。

4.區域性型別的應用特性

在區域性型別上的特性具有「累加」效應。

[attribute1, attribute2("hello")]

partial class class1{}

[attribute3, attribute2("exit")]

partial class class1{}

相當於

[attribute1, attribute2("hello"), attribute3, attribute2("exit")]

class class1 {}

注:attribute2屬性允許在類上多次使用。

5.區域性型別上的修飾符

(1)

乙個型別的各個部分上的訪問修飾符必須維持一致性。

(2)

如果乙個型別有乙個部分使用了abstract修飾符,那麼整個類都將被視為抽象類。

(3)

如果乙個型別有乙個部分使用了sealed 修飾符,那麼整個類都將被視為密封類。

(4)

乙個類的各個部分不能使用相互矛盾的修飾符,比如不能在乙個部分上使用abstract,又在另乙個部分上使用sealed。

6.區域性型別的基類和介面

(1)

乙個型別的各個部分上指定的基類必須一致。某個部分可以不指定基類,但如果指定,則必須相同。

(2)

區域性型別上的介面具有「累加」效應。

partial class class2: iinte***ce1, iinte***ce2 {}

partial class class2: iinte***ce3 {}

partial class class2: iinte***ce2 {}

相當於

class class2: iinte***ce1, iinte***ce2, iinte***ce3 {}

c partial 關鍵字的使用

c 2.0 引入了區域性型別的概念。區域性型別允許我們將乙個類 結構或介面分成幾個部分,分別實現在幾個不同的.cs檔案中。區域性型別適用於以下情況 1 型別特別大,不宜放在乙個檔案中實現。2 乙個型別中的一部分 為自動化工具生成的 不宜與我們自己編寫的 混合在一起。3 需要多人合作編寫乙個類。例 在...

C partial 關鍵字的使用

c 2.0 引入了區域性型別的概念。區域性型別允許我們將乙個類 結構或介面分成幾個部分,分別實現在幾個不同的.cs檔案中。區域性型別適用於以下情況 1 型別特別大,不宜放在乙個檔案中實現。2 乙個型別中的一部分 為自動化工具生成的 不宜與我們自己編寫的 混合在一起。3 需要多人合作編寫乙個類。例 在...

關鍵字const詳解

關鍵字const 1 用關鍵字const定義變數指所定義的常量。即恆定的變數,即不可改變的變數。例 const int i 10 此時 i 就是乙個整型的常量,其值不能改變。在c 中如果用const定義乙個物件,那麼物件中的成員變數就是常數,不能改變 只能為初始化的值 如果用const定義類中的成員...