internal(C# 参考)

348 篇文章 0 订阅

internal(C# 参考)

 

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

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

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

有关 internal 与其他访问修饰符的比较,请参见可访问性级别(C# 参考)访问修饰符(C# 编程指南)

有关程序集的更多信息,请参见程序集和全局程序集缓存(C# 和 Visual Basic)

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

从定义具有内部访问能力的类型或成员的程序集外部引用该类型或成员是错误的。

此示例包含两个文件:Assembly1.csAssembly1_a.cs第一个文件包含内部基类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
   }
}

有关详细信息,请参阅 C# 语言规范。该语言规范是 C# 语法和用法的权威资料。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值