C 類的訪問性 類成員的訪問修飾符

2022-02-13 19:46:01 字數 1798 閱讀 7484

例:internal class a{}

public class b:a{}是不允許的;

public class c是不允許的.

msdn參考:

訪問修飾符(c# 程式設計指南)

所有型別和型別成員都具有可訪問性級別,用來控制是否可以在您程式集的其他**中或其他程式集中使用它們。您在宣告型別或成員時使用以下訪問修飾符之一來指定其可訪問性:

public

(可以修飾類)

同一程式集中的任何其他**或引用該程式集的其他程式集都可以訪問該型別或成員。

private

(成員的預設訪問修飾符)

只有同一類或結構中的**可以訪問該型別或成員。

protected

只有同一類或結構或者派生類中的**可以訪問該型別或成員。

internal

(可以修飾類,類的預設修飾符)

同一程式集中的任何**都可以訪問該型別或成員,但其他程式集中的**不可以。

protected internal

同一程式集中的任何**或其他程式集中的任何派生類都可以訪問該型別或成員。

下面的示例演示如何為型別和成員指定訪問修飾符:

不是所有訪問修飾符都可以在所有上下文中由所有型別或成員使用,在某些情況下型別成員的可訪問性受到其包含型別的可訪問性的限制。以下各節提供了有關可訪問性的更多詳細資訊。

類和結構的可訪問性

直接在命名空間中宣告的類和結構(即,沒有巢狀在其他類或結構中的類和結構)可以是公共類和結構,也可以是內部類和結構。如果不指定訪問修飾符,則預設為 internal。巢狀的類和結構還可以宣告為私有類和結構。不可以從包含型別訪問私有巢狀型別。

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

可以使用 internalsvisibletoattribute 使其他某些程式集能夠訪問您的內部型別。有關更多資訊,請參見友元程式集(c# 程式設計指南)

。類成員和結構成員的可訪問性

可以使用五種訪問型別中的任何一種來宣告類成員(包括巢狀的類和結構)。結構成員無法宣告為受保護成員,因為結構不支援繼承。

成員的可訪問性決不能高於其包含型別的可訪問性。例如,在內部型別中宣告的公共方法只具有內部可訪問性。

如果類或結構的成員為屬性、字段、方法、事件或委託,並且該成員是某個型別或具有引數或返回值型別,則該成員的可訪問性不能超過該型別。例如,如果 c 不是公共類,則不能返回類 c 的公共方法 m。同樣,如果 a 宣告為私有,則型別 a 不能有受保護的屬性。

使用者定義的運算子必須始終宣告為公共運算子。有關更多資訊,請參見 operator(c# 參考)

。析構函式不能具有可訪問性修飾符。

若要設定類成員或結構成員的訪問級別,請向該成員宣告新增適當的關鍵字。下面是一些示例:

說明:

protected

internal 可訪問性的意思是受保護「或」內部,而不是受保護「和」內部。換句話說,可以從同一程式集內的任何類(包括派生類)中訪問 protected

internal 成員。若要限制為只有同一程式集內的派生類可以訪問,請將類本身宣告為內部,並將其成員宣告為受保護。

其他型別

直接用命名空間宣告時,可以將介面宣告為公共介面或內部介面,並且與類和結構一樣,介面預設具有內部可訪問性。介面成員始終是公共成員,因為介面的用途是讓其他型別能夠訪問某個類或結構。訪問修飾符不能應用於介面成員。

列舉成員始終是公共的,不能應用任何訪問修飾符。

預設情況下,委託預設具有內部訪問級別。

C 類的訪問性 類成員的訪問修飾符

例 internal class a public class b a 是不允許的 public class c是不允許的.msdn參考 訪問修飾符 c 程式設計指南 所有型別和型別成員都具有可訪問性級別,用來控制是否可以在您程式集的其他 中或其他程式集中使用它們。您在宣告型別或成員時使用以下訪問修...

C 類的訪問修飾符和類成員的訪問修飾符

1 在myclasslibrary中新增乙個public修飾的mylibrary類和student類 由於沒有使用任何修飾符,所以編譯器預設它是internal,即私有的 namespace myclasslibrary class student 分析 無論類是公開的還是私有的,在myclassl...

C 類 類訪問修飾符

目錄類 類訪問修飾符 公有 public 成員 私有 private 成員 保護 protected 成員 類定義以class開頭 定義box類 class box 預設情況下,類的所有成員都是私有的 class base 公有成員在程式中類的外部使用 進行訪問。可以不使用任何成員函式來設定和獲取公...