让我们继续使用文件夹和文件的示例来说明 public
、internal
和 private
这三种访问修饰符的作用范围:
假设我们有以下文件和文件夹结构:
- Project
- src
- ModuleA.cs
- ModuleB.cs
- Test
- TestModuleA.cs
- TestModuleB.cs
-
ModuleA.cs:
namespace Project { public class ModuleA { // 可以被任何代码访问 } internal class InternalModuleA { // 只能被 Project 程序集内的其他类访问 } private class PrivateModuleA { // 只能在 ModuleA.cs 文件内部访问 } }
-
ModuleB.cs:
namespace Project { public class ModuleB { // 可以被任何代码访问 } internal class InternalModuleB { // 只能被 Project 程序集内的其他类访问 } private class PrivateModuleB { // 只能在 ModuleB.cs 文件内部访问 } }
-
TestModuleA.cs:
namespace Project.Test { class TestModuleA { // 可以访问 public、internal 类 ModuleA 和 ModuleB ModuleA moduleA = new ModuleA(); InternalModuleA internalModuleA = new InternalModuleA(); ModuleB moduleB = new ModuleB(); InternalModuleB internalModuleB = new InternalModuleB(); // private 类 PrivateModuleA 和 PrivateModuleB 无法访问 } }
-
TestModuleB.cs:
namespace Project.Test { class TestModuleB { // 无法访问 internal 类 InternalModuleA 和 InternalModuleB // 编译错误:InternalModuleA 类是 internal 的,无法访问 // InternalModuleA internalModuleA = new InternalModuleA(); // private 类 PrivateModuleA 和 PrivateModuleB 无法访问 } }
在这个示例中,ModuleA
和 ModuleB
类被标记为 public
,因此可以被任何代码访问。InternalModuleA
和 InternalModuleB
类被标记为 internal
,只能在 Project
程序集内的其他类访问。PrivateModuleA
和 PrivateModuleB
类被标记为 private
,只能在定义它们的文件内部访问。
通过这个文件夹和文件的例子,您可以更清楚地理解 public
、internal
和 private
这三种访问修饰符的作用范围,以及它们如何控制类的访问权限。这种访问权限的限制有助于确保代码的封装性和安全性。