可访问域
成员的可访问域指定程序中可以引用成员的部分。如果成员嵌套在其他类型中,其可访问域由该成员的
顶级类型的可访问域至少是声明此类型的项目的程序文本。也就是说,域包括此项目的所有源文件。嵌套类型的可访问域至少是声明它的类型的程序文本,即域是一个类型体,包括所有嵌套的类型。嵌套类型的可访问域决不能超出包含类型的可访问域。这些概念在以下示例中加以说明。
示例
该示例包含一个顶级类型 T1 和两个嵌套类 M1 和 M2。这两个类包含具有不同声明的可访问性的字段。在 Main 方法中,每个语句后都有注释,指示每个成员的可访问域。注意,尝试引用不可访问的成员的语句被注释掉了。如果希望查看由引用不可访问的成员所导致的编译器错误,请逐个移除注释。
C# | |
---|---|
namespace AccessibilityDomainNamespace { public class T1 { public static int publicInt; internal static int internalInt; private static int privateInt = 0; // CS0414 public class M1 { public static int publicInt; internal static int internalInt; private static int privateInt = 0; // CS0414 } private class M2 { public static int publicInt = 0; internal static int internalInt = 0; private static int privateInt = 0; // CS0414 } } class MainClass { static void Main() { // Access is unlimited: T1.publicInt = 1; // Accessible only in current assembly: T1.internalInt = 2; // Error: inaccessible outside T1: // T1.myPrivateInt = 3; // Access is unlimited: T1.M1.publicInt = 1; // Accessible only in current assembly: T1.M1.internalInt = 2; // Error: inaccessible outside M1: // T1.M1.myPrivateInt = 3; // Error: inaccessible outside T1: // T1.M2.myPublicInt = 1; // Error: inaccessible outside T1: // T1.M2.myInternalInt = 2; // Error: inaccessible outside M2: // T1.M2.myPrivateInt = 3; } } } |
本在线速查手册由www.w┘3┘x┘u┘e.com提供,请勿盗用!