zoukankan      html  css  js  c++  java
  • C#的几种访问级别

    (又水一篇,手动狗头

    C#的几种访问级别

    Public 访问不受到限制
    Protected 允许本类以及派生类进行访问
    Internal 访问仅限于当前程序集
    Protected Internal 允许本类或派生类访问,注意比Internal的范围广
    Private 仅允许当前类访问,派生类不能访问

      其实这个写一下代码很容易就可以验证。

      新建一个包含两个Project的控制台项目。

      在TestAccess2中定义了BaseClass,代码如下:

     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 }

      另外分别定义了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的,这两个不能说谁比谁‘大’,要结合具体的场景来看。

  • 相关阅读:
    初探linux子系统集之led子系统(一)
    金融大数据分析从认知到实践(第1辑)(套装共3册)
    Blender权威指南
    零基础学Python
    中文版Photoshop CC图像处理与设计
    21天学通C++(第4版)
    Python应用开发实战
    电脑办公实战从入门到精通(超值版)
    Windows 10从新手到高手
    21天学通C语言(第7版)
  • 原文地址:https://www.cnblogs.com/dogtwo0214/p/12790384.html
Copyright © 2011-2022 走看看