1. 程式人生 > >C#中預設訪問修飾符

C#中預設訪問修飾符

如果被問到C#中預設的訪問修飾符是什麼?你該怎麼回答,是不是感覺不太好說!我把資料整理如下, 僅供參考!

首先,必須明確的是C#中的訪問修飾符有5中:

public
同一程式集中的任何其他程式碼或引用該程式集的其他程式集都可以訪問該型別或成員。
private
只有同一類或結構中的程式碼可以訪問該型別或成員。
protected
只有同一類或結構或者此類的派生類中的程式碼才可以訪問的型別或成員。
internal
同一程式集中的任何程式碼都可以訪問該型別或成員,但其他程式集中的程式碼不可以。
protected internal
由其宣告的程式集或另一個程式集派生的類中任何程式碼都可訪問的型別或成員。 
從另一個程式集進行訪問必須在類宣告中發生,該類宣告派生自其中宣告受保護的內部元素的類,並且必須通過派生的類型別的例項發生

下面分情況進行敘述:

1.名稱空間下元素的預設訪問修飾符

名稱空間下只能使用兩種訪問修飾符public和internal。如果沒有顯示的給這些元素訪問修飾符,其修飾符預設為internal。

2.各型別中的成員訪問修飾符

類中所有的成員,預設均為private,當然也可以修改成其它的訪問修飾符。

介面的成員預設訪問修飾符是public,也不可能是其他訪問修飾符。

名稱空間,列舉型別成員預設public,也不可能是其他訪問修飾符。

委託,預設的是internal 。

列表如下:

型別 預設訪問修飾符 該成員允許宣告的可訪問性
enum public public
class private public
protected internal protected internal private
interface public public
struct private public internal private

其次,需要注意的是:

1)派生類的可訪問性不能高於其基型別。換句話說,不能有從內部類 A 派生的公共類 B。如果允許這種情況,將會使 A 成為公共類,因為 A 的所有受保護的成員或內部成員都可以從派生類訪問。


2)成員的可訪問性決不能高於其包含型別的可訪問性。

3)可以使用五種訪問型別中的任何一種來宣告類成員(包括巢狀的類和結構。