所有型別和型別成員都具有可訪問性級別,用來控制是否可以在您程式集的其他**中或其他程式集中使用它們。
可使用一下訪問修飾符指定宣告型別或成員時型別或成員的可訪問性。
public
同一程式集中的任何其他**或引用該程式集的其他程式集都可以訪問該型別或成員。
private
只有同一類或結構中的**可以訪問該型別或成員。
protected
只有同一類或結構或者此類的派生類中的**才可以訪問的型別或成員。
internal
同一程式集中的任何**都可以訪問該型別或成員,但其他程式集中的**不可以。
protected internal由其宣告的程式集或另乙個程式集派生的類中任何**都可訪問的型別或成員。
從另乙個程式集進行訪問必須在類宣告中發生,該類宣告派生自其中宣告受保護的內部元素的類,並且必須通過派生的類型別的例項發生。
下面的示例演示如何為型別和成員指定訪問修飾符:
c#
publicclass bicycle
}
不是所有訪問修飾符都可以在所有上下文中由所有型別或成員使用,在某些情況下型別成員的可訪問性受到其包含型別的可訪問性的限制。
以下各節提供了有關可訪問性的更多詳細資訊。
直接在命名空間中宣告的類和結構(即,沒有巢狀在其他類或結構中的類和結構)可以是公共類和結構,也可以是內部類和結構。
如果不指定訪問修飾符,則預設為 internal。
結構成員,包括巢狀的類和結構,可以宣告為公共的、 內部的,或私人的。
類成員(包括巢狀的類和結構)可以為公共的、受保護的內部、受保護的、內部的或私有的。
類成員和結構成員的訪問級別,包括巢狀類和結構,預設為私有。
不可以從包含型別之外訪問私有巢狀型別。
派生類的可訪問性不能高於其基型別。
換句話說,不能有從內部類 a 派生的公共類 b。
如果允許這種情況,將會使 a 成為公共類,因為 a 的所有受保護的成員或內部成員都可以從派生類訪問。
可以使用 internalsvisibletoattribute 使其他某些程式集能夠訪問您的內部型別。
有關更多資訊,請參見友元程式集(c# 和 visual basic)。
可以使用五種訪問型別中的任何一種來宣告類成員(包括巢狀的類和結構)。
結構成員無法宣告為受保護成員,因為結構不支援繼承。
通常,成員的可訪問性低於包含成員的型別的可訪問性。
如果由成員實現介面方法或重寫已在公共基類中定義的虛擬方法時,內部類的公共成員可以從外部程式集訪問。
任何成員的字段、 屬性或事件的型別必須至少與該成員本身一樣具備可訪問性。
同樣,作為方法、索引器或代表的任一成員的返回型別和引數型別必須至少有與該成員本身一樣的可訪問性。
例如,如果 c 不是公共類,則不能返回類 c 的公共方法 m。
同樣,如果 a 宣告為私有,則型別 a 不能有受保護的屬性。
使用者定義的運算子必須始終宣告為公共運算子。
有關更多資訊,請參見 運算子(c# 參考)。
析構函式不能具有可訪問性修飾符。
要設定類成員或結構成員的訪問級別,請向該成員宣告新增適當的關鍵字,如下面的示例所示。
c#
// public class:public
class tricycle
// private field:
private
int wheels = 3;
// protected internal property:
protected
internal
int wheels
}}
受保護內部可訪問性級別的意思是受保護「或」內部,而不是受保護「和」內部。
換句話說,可以從同一程式集內的任何類(包括派生類)中訪問受保護的內部成員。
若要限制為只有同一程式集內的派生類可以訪問,請將類本身宣告為內部,並將其成員宣告為受保護。
直接用命名空間宣告時,可以將介面宣告為公共介面或內部介面,只與類和結構一樣,介面預設具有內部可訪問性。
介面成員始終是公共成員,因為介面的用途是讓其他型別能夠訪問某個類或結構。
訪問修飾符不能應用於介面成員。
列舉成員始終是公共的,不能應用任何訪問修飾符。
委託行為類似於類和結構。
預設情況下,它們在命名空間中直接宣告時具有內部訪問權,在巢狀時具有私有訪問權。
訪問修飾符
訪問修飾符 可以限制類和結構,以便只有宣告它們的程式或命名空間才能使用它們。可以限制類成員,以便只有派生類才能使用它們,或者限制類成員,以便只有當前命名空間或程式中的類才能使用它們。訪問修飾符是新增到類 結構或成員宣告的關鍵字,用以指定這些限制。這些關鍵字包括 使用這些訪問修飾符可指定下列五個可訪問...
訪問修飾符
前面我們已經看到並運用了訪問修飾符,現在我們來進一步的掌握。類成員支援五種訪問修飾 訪問不受限制 public 公共的 訪問範圍限定於它所屬的類或從該類派生的型別 protected 保護的 訪問範圍限定於此程式 internal 內部的 訪問範圍限定於此程式或那些由它所屬的類派生的型別 prote...
訪問修飾符
前面我們已經看到並運用了訪問修飾符,現在我們來進一步的掌握。類成員支援五種訪問修飾 訪問不受限制 public 公共的 訪問範圍限定於它所屬的類或從該類派生的型別 protected 保護的 訪問範圍限定於此程式 internal 內部的 訪問範圍限定於此程式或那些由它所屬的類派生的型別 prote...