ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 可访问域(C# 参考) 成员的可访问域指定程序中可以引用成员的部分。如果成员嵌套在其他类型中,其可访问域由该成员的[可访问性级别](https://msdn.microsoft.com/zh-CN/library/ba0a1yw2.aspx)和直接包含类型的可访问域共同确定。 顶级类型的可访问域至少是声明它的项目的程序文本。也就是说,域包括此项目的所有源文件。嵌套类型的可访问域至少是声明它的类型的程序文本,即域是一个类型体,包括所有嵌套的类型。嵌套类型的可访问域决不能超出包含类型的可访问域。这些概念在以下示例中加以说明。 该示例包含一个顶级类型 T1 和两个嵌套类 M1 和 M2。这两个类包含具有不同声明的可访问性的字段。在 Main 方法中,每个语句后都有注释,指示每个成员的可访问域。注意,尝试引用不可访问的成员的语句被注释掉了。如果希望查看由引用不可访问的成员所导致的编译器错误,请逐个移除注释。 ``` namespace AccessibilityDomainNamespace { public class T1 { public static int publicInt; internal static int internalInt; private static int privateInt = 0; static T1() { // T1 can access public or internal members // in a public or private (or internal) nested class M1.publicInt = 1; M1.internalInt = 2; M2.publicInt = 3; M2.internalInt = 4; // Cannot access the private member privateInt // in either class: // M1.privateInt = 2; //CS0122 } public class M1 { public static int publicInt; internal static int internalInt; private static int privateInt = 0; } private class M2 { public static int publicInt = 0; internal static int internalInt = 0; private static int privateInt = 0; } } class MainClass { static void Main() { // Access is unlimited: T1.publicInt = 1; // Accessible only in current assembly: T1.internalInt = 2; // Error CS0122: inaccessible outside T1: // T1.privateInt = 3; // Access is unlimited: T1.M1.publicInt = 1; // Accessible only in current assembly: T1.M1.internalInt = 2; // Error CS0122: inaccessible outside M1: // T1.M1.privateInt = 3; // Error CS0122: inaccessible outside T1: // T1.M2.publicInt = 1; // Error CS0122: inaccessible outside T1: // T1.M2.internalInt = 2; // Error CS0122: inaccessible outside M2: // T1.M2.privateInt = 3; // Keep the console open in debug mode. System.Console.WriteLine("Press any key to exit."); System.Console.ReadKey(); } } } ``` ## C# 语言规范 有关详细信息,请参阅 [C# 语言规范](https://msdn.microsoft.com/zh-CN/library/ms228593.aspx)。该语言规范是 C# 语法和用法的权威资料。 ## 请参阅 [C# 参考](https://msdn.microsoft.com/zh-CN/library/618ayhy6.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [C# 关键字](https://msdn.microsoft.com/zh-CN/library/x53a06bb.aspx) [访问修饰符(C# 参考)](https://msdn.microsoft.com/zh-CN/library/wxh6fsc7.aspx) [可访问性级别(C# 参考)](https://msdn.microsoft.com/zh-CN/library/ba0a1yw2.aspx) [可访问性级别的使用限制(C# 参考)](https://msdn.microsoft.com/zh-CN/library/cx03xt0t.aspx) [访问修饰符(C# 编程指南)](https://msdn.microsoft.com/zh-CN/library/ms173121.aspx) [public(C# 参考)](https://msdn.microsoft.com/zh-CN/library/yzh058ae.aspx) [private(C# 参考)](https://msdn.microsoft.com/zh-CN/library/st6sy9xe.aspx) [protected(C# 参考)](https://msdn.microsoft.com/zh-CN/library/bcd5672a.aspx) [internal(C# 参考)](https://msdn.microsoft.com/zh-CN/library/7c5ka91b.aspx)