C#存取修飾詞及各種元素的存取修飾詞的預設值

來源:互聯網
上載者:User

一個編譯器錯誤提示:在命名空間中定義的元素無法顯示的聲明為 private, protected, protected internal。

能在命名空間中定義的元素有:類(class),結構(struct),委託(delegate),介面(interface),枚舉(enum) 

MSDN提示: protected internal 可訪問性的意思是受保護“或”內部,而不是受保護“和”內部。

我們的存取修飾詞一共有5個層級

public, private, protected, internal, protected internal

 

1.命名空間下的元素的預設存取修飾詞

根據上面的紅色錯誤提示,可以知道命名空間下只能使用兩種存取修飾詞public和internal。如果沒有顯示的給這些元素存取修飾詞,其修飾符預設為internal 。

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

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

 

2.各類型中的成員的預設存取修飾詞

剩下的修飾符主要是正對繼承這個語言特性的,擁有繼承的類型有兩個類(class)和介面(interface)。public,internal同樣可以用於類型成員。

private : 同一類和結構的代碼可以訪問該類型和成員。

protected : 同一類和派生(繼承特性)類中的代碼可以訪問該類型和成員。

protected internal :  同一程式集中的任何代碼或其他程式集中的任何衍生類別都可以訪問該類型或成員。

 

MSDN提示 :

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

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

3.) 可以使用五種訪問類型中的任何一種來聲明類成員(包括嵌套的類和結構)。 

 

介面成員

介面成員存取修飾詞預設為public,且不能顯示使用存取修飾詞。

 

類成員

建構函式預設為private存取修飾詞。

解構函式不能顯示使用存取修飾詞且預設為private存取修飾詞。 

類的成員預設存取修飾詞為private; 

 

枚舉成員

枚舉類型成員預設為public存取修飾詞,且不能顯示使用修飾符。

 

結構成員 

結構成員預設為private修飾符。 

結構成員無法聲明為protected成員,因為結構不支援繼承。 

 

巢狀型別

巢狀型別的預設存取修飾詞為private。 和類,結構的成員預設訪問類型一致。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.