zoukankan      html  css  js  c++  java
  • 访问修饰符internal

    internal(C# 参考)

    internal 关键字是类型和类型的成员 访问修饰符。 只有在同一程序集的文件中,内部类型或成员才是可访问的,如下例所示:

    public class BaseClass 
    {
        // Only accessible within the same assembly
        internal static int x = 0;
    }

    从当前程序集或从包含类派生的类型,可以访问具有访问修饰符 protected internal 的类型或成员。


    内部访问通常用于基于组件的开发,因为它使一组组件能够以私有方式进行合作,而不必向应用程序代码的其余部分公开。 例如,用于生成图形用户界面的框架可以提供 Control 和 Form 类,这两个类通过使用具有内部访问权限的成员进行合作。 由于这些成员是内部的,它们不向正在使用框架的代码公开。
    从定义具有内部访问能力的类型或成员的程序集外部引用该类型或成员是错误的。


    示例
    此示例包含两个文件:Assembly1.cs 和 Assembly1_a.cs,这2个文件是2个不同的程序集,即2个独立的dll文件。

    第一个文件包含内部基类 BaseClass。 在第二个文件中,实例化 BaseClass 的尝试将产生错误。

    // Assembly1.cs
    // Compile with: /target:library
    internal class BaseClass 
    {
       public static int intM = 0;
    }
    // Assembly1_a.cs // Compile with: /reference:Assembly1.dll class TestAccess { static void Main() { BaseClass myBase = new BaseClass(); // CS0122 } }

    在此示例中,使用与示例 1 中所用的文件相同的文件,并将 BaseClass 的可访问性级别更改为 public。 还将成员 IntM 的可访问性级别更改为 internal。 在此例中,您可以实例化类,但不能访问内部成员。

    // Assembly2.cs
    // Compile with: /target:library
    public class BaseClass 
    {
       internal static int intM = 0;
    }
    // Assembly2_a.cs // Compile with: /reference:Assembly1.dll public class TestAccess { static void Main() { BaseClass myBase = new BaseClass(); // Ok. BaseClass.intM = 444; // CS0117 } }

     

  • 相关阅读:
    面试数据分析岗,怎么提升一倍成功率?让过来人给你支支招
    SQL执行效率提升几万倍的操作详解!
    记一次因Redis使用不当导致应用卡死过程
    运筹学那些事,专科学生学习运筹学之运输问题,No.5
    如何在C++中嵌入JAVA
    国际站中国区,孟买上Redis 4.0 集群版
    国际站中国区,孟买上Redis 4.0 集群版
    国际站中国区,孟买上Redis 4.0 集群版
    国际站中国区,孟买上Redis 4.0 集群版
    attachEvent与addEventlistener兼容性
  • 原文地址:https://www.cnblogs.com/gsk99/p/4975022.html
Copyright © 2011-2022 走看看