C# 成員默認訪問權限(public、private、protected、internal)

1.C#五個修飾符的權限
修飾符    級別    適用成員        解釋
public    公開    類及類成員的修飾符   對訪問成員沒有級別限制
private    私有    類成員的修飾符     只能在類的內部訪問
protected   受保護的  類成員的修飾符      在類的內部或者在派生類中訪問,不管該類和派生類是不是在同一程序集中
internal    內部的    類和類成員的修飾符    只能在同一程序集(Assembly)中訪問

protected internal 受保護的內部:如果是繼承關係,不管是不是在同一程序集中都可以訪問;如果不是繼承關係只能在同一程序集中訪問

2.類class的訪問權限
類的訪問修飾符只有兩種:public、internal。如果class前面沒有加任何修飾符的話,默認是internal。
public class:任何地方都可以訪問到。
internal class或class:只有同一個程序集中能訪問到(程序集代表能生成exe或dll的項目,一個程序集中可以有多個命名空間)。例如:一個解決方案中有兩個項目,就代表有兩個程序集,兩個程序集分別爲A、B。其中A中有個class爲internal級別的,那麼B引用了A的程序集也是不能調用這個類。

3.類成員(字段和方法)的訪問權限
類成員的修飾符可以爲:public、private、protected、internal、protected internal。

如果類成員(字段和方法)前面沒有加有修飾符的話,默認訪問權限是private。

但是構造函數默認訪問權限爲public

4.接口interface的訪問權限
同class一樣,可以爲public和internal。
但是接口中的方法默認訪問權限爲public,並且不能顯示的定義其他訪問類型。

5.抽象類abstract class(該類只能作爲父類被用於繼承,而不能進行對象實例化)
抽象類中必須有一個以上的抽象方法,訪問類型可以定義爲:public、protected、internal,不能是private

6.枚舉enum和結構struct權限
枚舉類型成員默認爲public訪問修飾符,且不能顯示的使用其他修飾符。
結構成員默認private修飾符,
結構成員無法聲明爲protected成員,因爲結構不支持繼承。

PS:命名空間和程序集的區別
命名空間用於對類型進行邏輯分組。程序集則是程序的物理分組,對應於一個dll或exe文件。一個程序集中可以有多個命名空間。

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