C#常用修飾符


訪問修飾符

訪問修飾符是一些關鍵字,用於指定聲明的成員或類型的可訪問性,C#有4個訪問修飾符:public、private、protected、internal,使用這些訪問修飾符可以指定以下5個訪問級別:

  • public: 同一程序集(DLL或EXE)中的任何其他代碼或引用該程序集的其他程序集都可以訪問該類型或成員。
  • private: 只有同一類或結構中的代碼可以訪問該類型或成員。
  • protected: 只有同一類或結構或者此類的派生類中的代碼才可以訪問該類型或成員。
  • internal: 同一程序集中的任何代碼都可以訪問該類型或成員,但的代碼不可以。
  • protected internal: 在一程序集中,protected internal體現的是internal的性質;在其他程序集中,protected internal體現的是protected的性質。

一個成員或類型只能有一個訪問級別。

類型的可訪問性

不嵌套在其他類型中的頂級類型的可訪問性只能是internal或public,這些類型的默認可訪問性是internal。嵌套類型是其他類型的成員,具有和其它成員一樣的可訪問性。

class A {} // 默認可訪問性是internal

class B
{
    class Nested {} // 默認可訪問性是private
}

成員的可訪問性

類型 默認的成員可訪問性 該成員允許聲明的可訪問性
enum public
class private public、private、protected、internal、protected internal
interface public
struct private pubic、private、internal

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的。

參考資料

1、修飾符

2、可訪問級別


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM