public:公有訪問。不受任何限制。private:私有訪問。只限於本類成員訪問,子類和實例都不能訪問。protected:保護訪問。只限於本類和子類訪問,實例不能訪問。internal:內部訪問。只限於本項目(程式集)內訪問,其他不能訪問。protected internal :內部保護訪問。只 ...
public:公有訪問。不受任何限制。
private:私有訪問。只限於本類成員訪問,子類和實例都不能訪問。
protected:保護訪問。只限於本類和子類訪問,實例不能訪問。
internal:內部訪問。只限於本項目(程式集)內訪問,其他不能訪問。
protected internal :內部保護訪問。只限於本項目或是本類和子類訪問,其他不
能訪問
1、類(class)
預設的修飾符:private
可以被修飾的:public,private,internal,protected,protected internal
2、枚舉(enum)
預設的修飾符:private
可以被修飾的:public,private,internal
3、結構(struct)
預設的修飾符:public
4、介面(interface)
預設的修飾符:public
只能用在方法或變數的修飾符
(1) const:指定無法修改欄位或局部變數的值。
用於修改欄位或局部變數的聲明。它指定欄位或局部變數的值是常數,不能被修改。
(2) new:從基類成員隱藏繼承的成員。
在用作修飾符時,new關鍵字可以顯式隱藏從基類繼承的成員。隱藏繼承的成員意味著該成 員的派生版本將替換基類版本。在不使用 new修飾符的情況下隱藏成員是允許的,但會生成警告。使用 new顯式隱藏成員會取消此警告,並記錄代之以派生版本這一事實。
若要隱藏繼承的成員,請使用相同名稱在派生類中聲明該成員,並使用 new修飾符修飾該成員。
對同一成員同時使用 new和override是錯誤的,因為這兩個修飾符在含義上相互排斥。使用 new會用同樣的名稱創建一個新成員並使原始成員變為隱藏的,而 override則擴展繼承成員的實現。
(3) virtual:在派生類中聲明其實現可由重寫成員更改的方法或訪問器。
用於修飾方法、屬性、索引器或事件聲明,並且允許在派生類中重寫這些對象。
調用虛方法時,將為重寫成員檢查該對象的運行時類型。將調用大部分派生類中的該重寫成員,如果沒有派生類重寫該成員,則它可能是原始成員。
預設情況下,方法是非虛擬的。不能重寫非虛方法。
virtual修飾符不能與 static、abstract和 override修飾符一起使用。
除了聲明和調用語法不同外,虛擬屬性的行為與抽象方法一樣。
(4) override:提供從基類繼承的虛擬成員的新實現。
要擴展或修改繼承的方法、屬性、索引器或事件的抽象實現或虛實現,必須使用 override修飾符。
(5) readonly:聲明一個欄位,該欄位只能賦值為該聲明的一部分或者在同一個類的構造函數中。
是可以在欄位上使用的修飾符。當欄位聲明包括 readonly修飾符時,該聲明引入的欄位賦值只能作為聲明的一部分出現,或者出現在同一類的構造函數中。在此示例中,欄位year的值無法在ChangeYear方法中更改,即使在類構造函數中給它賦了值。
=========================================================================
C#中除訪問修飾符外,還有很多非訪問的修飾符:
partial,abstract,sealed,static,virtual,override。
partial:部分類,可以將一個類分成幾部分寫在不同的文件中,最終編譯時將合併
成一個文件,且各個部分不能分散在不同程式集中。
abstract:抽象類,不能夠創建該類的實例;修飾方法時表示該方法需要由子類來
實現,如果子類沒有實現該方法,那麼子類同樣是抽象類。含有抽象方
法的類一定是抽象類。
sealed:密封類,該類不能夠被繼承;修飾方法時表示該方法不能被重寫。
static:靜態類,不能被實例化,既然不能被實例化,那麼這個類也就不能夠含有
對象成員,即該類所有成員為靜態;訪問類成員時只能通過“類名.成員
名”的方式訪問。
virtual:修飾方法成員,表示虛方法。父類可以含有該類的實現,子類可以重寫該
方法。
override:表示該方法重寫了父類的方法。
無或internal
類只能在當前項目中訪問
public
類可以在任何地方訪問公有訪問。不受任何限制。
abstract或internal abstract
類只能在當前項目中訪問,不能實例化,只能繼承私有訪問
public abstract
類可以在任何地方訪問,不能實例化,只能繼承
sealed或internal sealed
類只能在當前項目中訪問,不能派生,只能實例化
public sealed
類可以在任何地方訪問,不能派生,只能實例化