類的可訪問屬性有public,private,protect,innertal,protect internal.其中internal只有在同一程式集的檔案中,內部型別或成員才是可訪問。下面就用這個來繼續程式集的事例。
View Code
你們說這個編譯能通過嗎?很明顯,如果基礎好點同學,不用編譯器就可以看出,這個是有語法錯誤的。作為類的屬性來說,屬性的訪問性不能高于型別的訪問性。
找了msdn發現http://msdn.microsoft.com/zh-cn/library/k3677y81(v=vs.100) 這里是這樣說的:
程式集構成了基于 .NET 的應用程式的部署、版本控制、重用、激活范圍和安全權限的基本單元。程式集以可執行 (.exe) 檔案或元件 (.dll) 檔案的形式出現,是 .NET Framework 的生成塊。它們向公共語言運行庫提供了解型別實作所需要的資訊。可以將程式集看成是構成邏輯功能單元并為一起作業而生成的型別和資源的集合。
程式集可以分為,公有程式集和私有程式集。微軟給我們用framework的提供的System之類的就是公有程式集,私有程式集可以說是我們新建的類別庫吧。 為什么會有這個區分,因為一般來說一個程式集只能被一個行程域加載,如果要多個行程域加載同一個程式集,那么只有把程式集變成公有程式集。我們寫的dll也是可以加入公有程式集的(但是必須是有強名)。很簡單的,自己baidu下就可以找到。有一個很簡單的區分是不是公有程式集的方法,如果你參考這個dll。這個dll沒有被復制到bin目錄,那他就是公有程式集(微軟提供和自己加入公有程式集)http://space.189works.com/space-uid-10034751.html 詳細!
下面重點收錄C#訪問修飾符及各種元素的訪問修飾符的默認值
能在命名空間中定義的元素有:類(class),結構(struct),委托(delegate),介面(interface),列舉(enum)
MSDN提示: protected internal 可訪問性的意思是受保護“或”內部,而不是受保護“和”內部。
我們的訪問修飾符一共有5個級別
public, private, protected, internal, protected internal
命名空間下的元素的默認訪問修飾符(能在命名空間中定義的元素有:類(class),結構(struct),委托(delegate),介面(interface),列舉(enum))
命名空間下只能使用兩種訪問修飾符public和internal。如果沒有顯式的給這些元素訪問修飾符,其修飾符默認為internal 。
public : 同一程式集的其他任何代碼或參考該程式集的其他程式集都可以訪問該型別或成員。
internal : 同一程式集中的任何代碼都可以訪問該型別或成員,但其他程式集不可以訪問。
各型別中的成員的默認訪問修飾符
剩下的修飾符主要是針對繼承這個語言特性,擁有繼承的型別有兩個——類(class)和介面(interface)。public,internal同樣可以用于型別成員。
private : 同一類和結構的代碼可以訪問該型別和成員。
protected : 同一類和派生(繼承特性)類中的代碼可以訪問該型別和成員。
protected internal : 同一程式集中的任何代碼或其他程式集中的任何派生類都可以訪問該型別或成員。
MSDN提示 :
1.) 派生類的可訪問性不能高于其基型別。換句話說,不能有從內部類 A 派生的公共類 B。如果允許這種情況,將會使 A 成為公共類,因為 A 的所有受保護的成員或內部成員都可以從派生類訪問。
2.) 成員的可訪問性決不能高于其包含型別的可訪問性。
3.) 可以使用五種訪問型別中的任何一種來宣告類成員(包括嵌套的類和結構)。
介面(interface)
介面成員訪問修飾符默認為public,且不能顯示使用訪問修飾符。
類(class)
建構式默認為private訪問修飾符。
解構式不能顯示使用訪問修飾符且默認為private訪問修飾符。
類的成員默認訪問修飾符為private;
列舉(enum)
列舉型別成員默認為public訪問修飾符,且不能顯示使用修飾符。
結構(struct)
結構成員默認為private修飾符。
結構成員無法宣告為protected成員,因為結構不支持繼承。
嵌套型別
嵌套型別的默認訪問修飾符為private。 和類,結構的成員默認訪問型別一致。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/55433.html
標籤:ASP.NET
