Partial 部分方法顧明思議是方法的一部分,不完整的,在ide編譯時候,會將所有部分方法載入到一起統一編譯,如果分部方法沒有被實現,編譯器就不會、對他們進行編譯。 局部類型的限制 (1) 局部類型只適用於類、介面、結構,不支持委托和枚舉。(2) 同一個類型的各個部分必須都有修飾符 partial ...
Partial 部分方法顧明思議是方法的一部分,不完整的,在ide編譯時候,會將所有部分方法載入到一起統一編譯,如果分部方法沒有被實現,編譯器就不會、對他們進行編譯。
局部類型的限制
(1) 局部類型只適用於類、介面、結構,不支持委托和枚舉。
(2) 同一個類型的各個部分必須都有修飾符 partial。
(3) 使用局部類型時,一個類型的各個部分必須位於相同的命名空間中。
(4) 一個類型的各個部分必須被同時編譯。
3. 局部類型的註意點
(1) 關鍵字partial是一個上下文關鍵字,只有和 class、struct、interface 放在一起時才有關鍵字的含義。因此partial的引入不會影響現有代碼中名稱為partial的變數。
(2) 局部類型的各個部分一般是分開放在幾個不同的.cs文件中,但C#編譯器允許我們將他們放在同一文件中。
在局部類型上的特性具有“累加”效應。
[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。
(5)如果一個部分類使用了 static修飾符,那麼整個類都將被視為靜態類 Virtual 虛方法 首先虛方法是延遲載入的,這點需要註意 1.虛擬成員的實現可由派生類中的重寫成員更改
調用虛方法時,將為重寫成員檢查該對象的運行時類型。將調用大部分派生類中的該重寫成員,如果沒有派生類重寫該成員,則它可能是原始成員。
預設情況下,方法是非虛擬的。不能重寫非虛方法。
virtual 修飾符不能與 static、abstract, private 或 override 修飾符一起使用。
除了聲明和調用語法不同外,虛擬屬性的行為與(abstract)抽象方法一樣。
-
在靜態屬性上使用 virtual 修飾符是錯誤的。
-
通過包括使用 override 修飾符的屬性聲明,可在派生類中重寫虛擬繼承屬性。
abstract方法必須在派生類中重寫,而virtual則不必,
abstract方法只能在抽象類中聲明,虛方法則不是
abstract方法不能聲明方法實體,
abstract public void AAA();
虛方法則可以
public virtual void BBB()
{
Console.WriteLine("A");
}
虛方法可以實現多態,而抽象方法不可以。。。