internal 访问级别 [c#]

internal加在类的前面,这样一来只有同一个assembly的文件间才可以引用。internal常见用途就是基于组件的开发,方便组件间通讯,又不会将结构暴露给外界。

例程里面,assembly1定义的BaseClass是一个internal类,在输出成为dll以后,assembly2过来引用它,这个时侯再来想引用internal的class就不行了。

The internal keyword is an access modifier for types and type members. Internal members are accessible only within files in the same assembly. For more information on assemblies, see Components and Assemblies.

A common use of internal access is in component-based development because it enables a group of components to cooperate in a private manner without being exposed to the rest of the application code. For example, a framework for building graphical user interfaces could provide Control and Form classes that cooperate using members with internal access. Since these members are internal, they are not exposed to code that is using the framework.

It is an error to reference a member with internal access outside the assembly within which it was defined. Caution An internal virtual method can be overridden in some languages, such as textual Microsoft intermediate language (MSIL) using Ilasm.exe, even though it cannot be overridden using C#.

For a comparison of internal with the other access modifiers, see Accessibility Levels.

Example

This example contains two files, Assembly1.cs and Assembly2.cs. The first file contains an internal base class, BaseClass. In the second file, an attempt to access the member of the base class will produce an error.

  • File Assembly1.cs:
// Assembly1.cs
// compile with: /target:library
internal class BaseClass
{
   public static int IntM = 0;
}

-File Assembly2.cs

// Assembly2.cs
// compile with: /reference:Assembly1.dll
// CS0122 expected
class TestAccess
{
   public static void Main()
   {
      BaseClass myBase = new BaseClass();   // error, BaseClass not visible outside assembly
   }
}
时间: 2024-11-07 15:43:32

internal 访问级别 [c#]的相关文章

Swift - 访问控制(private,internal,public)

在Swift语言中,访问修饰符有三种,分别为private,internal和public.同时,Swift对于访问权限的控制,不是基于类的,而是基于文件的.其区别如下: 1,private private访问级别所修饰的属性或者方法只能在当前的Swift源文件里可以访问. 2,internal(默认访问级别,internal修饰符可写可不写) internal访问级别所修饰的属性或方法在源代码所在的整个模块都可以访问. 如果是框架或者库代码,则在整个框架内部都可以访问,框架由外部代码所引用时,

Swift学习笔记7--访问控制

在Swift语言中,访问修饰符有三种,分别为private,internal和public.同时,Swift对于访问权限的控制,不是基于类的,而是基于文件的.其区别如下: 1,private private访问级别所修饰的属性或者方法只能在当前的Swift源文件里可以访问. 2,internal(默认访问级别,internal修饰符可写可不写) internal访问级别所修饰的属性或方法在源代码所在的整个模块都可以访问. 如果是框架或者库代码,则在整个框架内部都可以访问,框架由外部代码所引用时,

LINQ综合学习大全

LINQ体验 LINQ体验(1)——Visual Studio 2008新特性 一.写本系列的目的 我平时利用课余零碎时间来学习ASP.NET3.5.LINQ.Silverlight.ASP.NET 3.5 Extensions等新东西,通过笔记形式来记录自己所学的历程,也给大家一起学习Visual Studio 2008 和 .NET 3.5提供一个平台,为保证此系列的完整性,我打算先依次介绍一下C# 3.0新语言特性和改进,然后从一条一条LINQ语句分析来贯穿LINQ的知识点.最后通过一个实

版权控制

http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/chapter2/23_Access_Control.html 本页内容包括: 模块和源文件 访问级别 访问级别的使用原则 默认访问级别 单目标应用程序的访问级别 Framework的访问级别 访问控制语法 自定义类型 元组类型 函数类型 枚举类型 原始值和关联值 嵌套类型 子类 常量.变量.属性.下标 Getter和Setter 初始化 默认初始化方法 结构

Swift学习之访问控制详解

本文和大家分享的主要是swift 中访问控制相关内容,一起来看看吧,希望对大家 学习swift有所帮助. 访问控制对访问你的其他代码源文件和模块部分进行了约束.这个特性允许你隐藏你的代码实现,并且指定通过其可以访问和使用该代码的优选接口. class , structure  和  enumeration  都可以指定访问级别,当然, property , method , initializer  和 属于这里类型的  subscript . protocol 可以限制到某个上下文,全局变量,

C # 开发 —— 拉姆表达式

What's LINQ? Language Integrated Query 是也.说得再明白一些,这是编程语言的一种新特性,能够将数据查询语句集成到编程语言中. 主要还是因为现在的数据格式越来越多,数据库.XML.数组.哈希表--每一种都有自己操作数据的方式,学起来费事费力.于是,就有了LINQ诞生的理由--以一种统一的方式操作各种数据源,减少数据访问的复杂性. 通过GetMethods的方法,拿到string的所有方法,接下来,选出所有非静态的方法签名 MethodInfo[] method

详解Linq to SQL

第一部分,什么是Linq to sql Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml.Linq to objects.Linq to dataset.Linq to entities等组成了强大的LINQ. 要学好LINQ查询语法,就不得不先理解C# 3.0的一些新特性,下面一一简单介绍. 第二部分,隐含类型局部变量 var age

面向对象的设计的三大特征:三.封装

添加新的程序集: 右击解决方案—添加—新建项目—类库 选择主项目—引用—右键添加引用 using 程序集 类的访问修饰符: 类的访问性有两个级别:public 和 internal 标记为Public的类可以被系统内的任何程序集访问: 标记为internal的类只能被它自己所在的程序集中的类看到,默认为internal访问级别 成员的访问修饰符 1. 所有显式声明在类的声明中的成员都是相互可见的,无论它们的访问性说明如何 2. 必须对每个成员指定成员访问级别.如果不指定某个成员的访问级别,它的隐

Swift2.1 语法指南——访问控制

原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html#//apple_ref/doc/uid/TP40014097-CH41-ID3 参考:http://wiki.jikexueyuan.com/project/swift/chapter2/24_Access_Control.html 1.