C#的几种访问级别
2021-03-08 16:26
标签:test 手动 不同 新建 ima 访问 src name 注意 (又水一篇,手动狗头 C#的几种访问级别 其实这个写一下代码很容易就可以验证。 新建一个包含两个Project的控制台项目。 在TestAccess2中定义了BaseClass,代码如下: 另外分别定义了BaseClass的派生类TestClass,和与BaseClass在同一程序集的另一个类TestClass2(非派生自TestClass)。 在TestClass中可以访问到的有: 除了Private都可以访问。在TestClass2中可以访问的有: Private自然是不能访问,因为TestClass2也不是继承自BaseClass,所以Protected的也不能访问。 然后我们在TestAccess程序集中引用程序集TestAccess2,直接new一个BaseClass对象看看结果: 只可以访问Public的内容。 如果我们在TestAccess新建一个类继承自TestAccess2的BaseClass呢,访问结果如下: 注意TestProtectInternal是定义在不同的程序集中,因为继承自BaseClass,所以反而比BaseClass本身能访问的还要多一些。 其实不太好理解的就是Protected 和 internal protect的,这两个不能说谁比谁‘大’,要结合具体的场景来看。 C#的几种访问级别 标签:test 手动 不同 新建 ima 访问 src name 注意 原文地址:https://www.cnblogs.com/dogtwo0214/p/12790384.html
Public
访问不受到限制
Protected
允许本类以及派生类进行访问
Internal
访问仅限于当前程序集
Protected Internal
允许本类或派生类访问,注意比Internal的范围广
Private
仅允许当前类访问,派生类不能访问
1 namespace TestAccess2
2 {
3 public class BaseClass
4 {
5 public string PublicStr { get; set; }
6
7 protected string ProtectedStr { get; set; }
8
9 internal string InternalStr { get; set; }
10
11 protected internal string ProtectedInternalStr { get; set; }
12
13 private string PrivateStr { get; set; }
14 }
15 }