當前位置:才華齋>計算機>C語言>

用C#語言中的修飾符

C語言 閱讀(3.11W)

修飾符是用於限定型別以及型別成員的申明的一種符號。 下面主要從C#中的訪問修飾符,作用於類和結構的修飾符,用在方法或變數的修飾符和特殊作用的修飾符四種,來給大家介紹。更多相關資訊請關注相關欄目!

用C#語言中的修飾符

1. 訪問修飾符

指定宣告的型別和型別成員的可訪問性。

(1) public:是型別和型別成員的訪問修飾符。公共訪問是允許的最高訪問級別。對訪問公共成員沒有限制。

(2) private:是一個成員訪問修飾符。私有訪問是允許的最低訪問級別。私有成員只有在宣告它們的類和結 構體中才是可訪問的。

(3) internal:是型別和型別成員的訪問修飾符。只有在同一程式集的檔案中,內部型別或成員才是可訪問的。

(4) protected:是一個成員訪問修飾符。受保護成員在它的類中可訪問並且可由派生類訪問。

2. 可以作用於類和結構的修飾符

(1) abstract:指示某個類只能是其他類的基類。

可以和類、方法、屬性、索引器及事件一起使用。在類宣告中使用 abstract修飾符以指示某個類只能是其他類的基類。標記為抽象或包含在抽象類中的成員必須通過從抽象類派生的類來實現。

(2) sealed:指定類不能被繼承。

可以應用於類、例項方法和屬性。密封類不能被繼承。密封方法會重寫基類中的方法,但其本身不能在任何派生類中進一步重寫。當應用於方法或屬性時,sealed修飾符必須始終與override一起使用。

在類宣告中使用 sealed修飾符可防止繼承此類

(3) static:宣告屬於型別本身而不是屬於特定物件的成員。

宣告屬於型別本身而不是屬於特定物件的靜態成員。可用於類、欄位、方法、屬性、運算子、事件和建構函式,但不能用於索引器、解構函式或類以外的型別。

(4) partial:在整個同一程式集中定義分部類和結構。

分部型別定義允許將類、結構或介面的定義拆分到多個檔案中。

3. 只能用在方法或變數的修飾符

(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方法中更改,即使在類建構函式中給它賦了值。

4. 特殊作用的修飾符

(1) event:宣告事件。

類和結構使用事件將出現的可能影響物件狀態的事件通知給物件。

(2) extern:指示在外部實現方法。

用於宣告在外部實現的方法。extern修飾符的常見用法是在使用 Interop 服務 調入非託管程式碼時與DllImport屬性一起使用;在這種情況下,該方法還必須宣告為 static。

extern關鍵字還可以定義外部程式集別名,使得可以從單個程式集中引用同一組件的不同版本。

將 abstract和 extern修飾符一起使用來修改同一成員是錯誤的。使用 extern修飾符意味著方法在 C# 程式碼的外部實現,而使用 abstract修飾符意味著在類中未提供方法實現。

(3) unsafe:宣告不安全的上下文。該上下文是任何涉及指標的操作所必需的。

(4) volatile:指示欄位可由作業系統、硬體或併發執行執行緒等在程式中進行修改。

volatile關鍵字表示欄位可能被多個併發執行執行緒修改。宣告為 volatile的欄位不受編譯器優化(假定由單個執行緒訪問)的限制。這樣可以確保該欄位在任何時間呈現的都是最新的值。

volatile修飾符通常用於由多個執行緒訪問而不使用 lock 語句(C# 參考)語句對訪問進行序列化的欄位。

volatile關鍵字可應用於以下型別:

(1)引用型別。

(2)指標型別(在不安全的上下文中)。

(3)整型,如 sbyte、byte、short、ushort、int、uint、char、float 和 bool。

(4)具有整數基型別的列舉型別。

(5)已知為引用型別的泛型型別引數。

(6)IntPtr 和 UIntPtr。

所涉及的型別必須是類或結構的欄位。不能將區域性變數宣告為 volatile。