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。

C#默認給非abstract類生成的構造函數為public,給abstract類生成的構造函數為protected

自己寫的構造函數,如果不標示訪問權限,默認為private

 

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

 

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

 

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

 

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

 

 

 


免責聲明!

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



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