C#訪問修飾符(Public/Private/Protected/Internal)


訪問修飾符(或者叫訪問控制符)是面嚮對象語言的特性之一,用於對類、類成員函數、類成員變量進行訪問控制。同時,訪問控制符也是語法保留關鍵字,用於封裝組件。


參考MSDN中修飾符說明:

public

同一程序集中的任何其他代碼或引用該程序集的其他程序集都可以訪問該類型或成員。

private

只有同一類或結構中的代碼可以訪問該類型或成員。

protected

只有同一類或結構或者此類的派生類中的代碼纔可以訪問的類型或成員。

internal

同一程序集中的任何代碼都可以訪問該類型或成員,但其他程序集中的代碼不可以。

protected internal

由其聲明的程序集或另一個程序集派生的類中任何代碼都可訪問的類型或成員。 從另一個程序集進行訪問必須在類聲明中發生,該類聲明派生自其中聲明受保護的內部元素的類,並且必須通過派生的類類型的實例發生。

Sealed Classes

Sealed修飾符的類,不可被其他類繼承。


同時,C#中類、枚舉、結構體等修飾符規則表如下:

image


小結:

  1. Class成員的默認修飾符爲private

  2. class 被標記爲internal僅能被當前程序集訪問.

  3. Namespace默認爲public修飾符,且不能添加修飾符。

  4. class可以使用public 或 internal修飾符.不能使用修飾符 protectedprivate. class默認的修飾符爲internal.

  5. 類成員可使用所有修飾符,默認爲 private.

  6. Protected internal修飾符約定了僅在繼承類內有效.

  7. 在public 與 internal修飾符之間,public通常有更大的訪問權限.

  8. 基類必須必子類有更大的修飾符訪問權限,纔可被子類繼承.

  9. 函數返回值的修飾符要有能訪問返回值的權限.

  10. sealed Class無法被子類繼承.

  11. const變量,需要在聲明時完成初始化,在編碼階段不能初始化.

  12. 類的const變量,可以彼此引用,但是不能形成循環引用.

  13. const變量在編譯器進行初始化,故const的運算可被執行.

  14. const變量不能被標記爲static.

  15. Static 變量在類首次被加載時候初始化. int類型默認初始化爲0,bool被初始化爲False.

  16. static readonly 字段無法被賦值,static構造函數或者變量初始化時刻除外.


【詳細介紹及來源(http://my.oschina.net/powertoolsteam/blog/420004)】




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章