注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

C#关键字 :internal(C# 参考)  

2011-10-10 22:43:49|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

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

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

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

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

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

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

注意注意

尽管不能用 C# 重写 internalvirtual 方法,但可以用某些语言(如使用 Ilasm.exe 的文本 Microsoft 中间语言 (MSIL))重写此方法。

C关键字 :internal(C 参考) - 海里的贝壳 - apple的博客示例

此示例包含两个文件: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 } }

  评论这张
 
阅读(510)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017