C#常用修飾符
訪問修飾符
訪問修飾符是一些關鍵字,用於指定宣告的成員或型別的可訪問性,C#有4個訪問修飾符:public、private、protected、internal,使用這些訪問修飾符可以指定以下5個訪問級別:
- public: 同一程式集(DLL或EXE)中的任何其他程式碼或引用該程式集的其他程式集都可以訪問該型別或成員。
- private: 只有同一類或結構中的程式碼可以訪問該型別或成員。
- protected: 只有同一類或結構或者此類的派生類中的程式碼才可以訪問該型別或成員。
- internal: 同一程式集中的任何程式碼都可以訪問該型別或成員,但的程式碼不可以。
- protected internal: 在一程式集中,protected internal體現的是internal的性質;在其他程式集中,protected internal體現的是protected的性質。
一個成員或型別只能有一個訪問級別。
abstract
使用abstract修飾的類為抽象類,抽象類只能是其他類的基類,不能與sealed、static一起使用。
abstract可以修飾抽象類中的方法或屬性,此時,方法或屬性不能包含實現,且訪問級別不能為私有。
抽象類不能被例項化。
sealed
使用sealed修飾的類為密封類,密封類無法被繼承,不能和abstract、static一起使用。
當sealed用於方法或屬性時,必須始終與override一起使用。
static
使用static修飾的類為靜態類,靜態類所有成員都必須是靜態的,不能與abstract、sealed一起使用。
static可以修飾方法、欄位、屬性或事件,始終通過類名而不是例項名稱訪問靜態成員,靜態欄位只有一個副本。
靜態類不能被例項化。
const
使用const關鍵字來宣告某個常量欄位或常量區域性變數,必須在宣告常量時賦初值。
不能與static一起使用,常量預設是static的,常量欄位只有一個副本。
readonly
使用readonly關鍵字來宣告只讀欄位。
只讀欄位可以在宣告或建構函式中初始化,每個類或結構的例項都有一個獨立的副本。
可以與static一起使用,宣告靜態只讀欄位。
靜態只讀欄位可以在宣告或靜態建構函式中初始化,靜態常量欄位只有一個副本。
virtual
virtual關鍵字用於修飾方法、屬性、索引器或事件宣告,並使它們可以在派生類中被重寫。
預設情況下,方法是非虛擬的。 不能重寫非虛方法。
virtual修飾符不能與static、abstract、private或override修飾符一起使用。
override
要擴充套件或修改繼承的方法、屬性、索引器或事件的抽象實現或虛實現,必須使用override修飾符。
重寫的成員必須是virtual、abstract或override的。