internal in C#
说白了
被 internal 修饰的东西只能在本程序集(当前项目)内被使用。
被 protected internal 修饰的属性/方法 可以在其他项目中,被派生类使用
例如有两个项目app1和app2.
app1是启动项目,而app2只是一个类库
/*项目app2*/ namespace app2 { internal class cInternal //该类只能在app2中使用(整个类都internal,相当于所有的属性也全都internal了) { public int a;//只有app2中可以使用 internal int b;//同上,只有app2中可以使用 } public class vInternal //该类可以在app1中使用(只要引用app2即可) 但是在app2之外的其他项目中不能使用此类中被internal修饰的属性/方法 { internal int a;//只能在app2中使用 protected internal int b;//在app2中任意使用,在app1中不可以直接使用,但是可以被app1中的继承自该类的类使用。 public int c;//app1 app2中任意使用 protected internal void Display()//在app2中任意使用,在app1中不可以直接使用,但是可以被app1中的继承自该类的类使用。 {Console.WriteLine("Hello protected Internal");} } }//namespace app2 /*项目app1*/ using app2; namespace app1 { class app1() { app2.cInternal InternalClass = new app2.cInternal();//!!! ERROR !!! - cInternal被internal修饰,只能在app2中使用 app2.vInternal InternalVar = new app2.vInternal ();//OK - vInternal 被public修饰,能在任何地方使用 InternalVar.a = ;//!!! ERROR !!! - 被internal修饰,只能在app2中使用 InternalVar.b = ;//!!! ERROR !!! - 被protected internal修饰,不能在外部项目中直接使用。 InternalVar.c = ;//OK InternalVar.Display();//!!! ERROR !!! - 被protected internal修饰,不能在外部项目中直接使用。 }//classAPP1 class InheritFromInternal:app2.vInternal//继承了vInternal,于是可以使用vInternal中被protected internal修饰的属性 { base.a = ;//!!! ERROR !!! - 被修饰为internal的属性只能在app2中使用. base.b = ;//OK - 被修饰为protected internal的属性可以被派生类使用. base.Display();//OK - 被修饰为protected internal的属性可以被派生类使用. }//classInheritFromInternal }//namespace app1
internal in C#的更多相关文章
- myeclipse 内存不够用报错PermGen space 和 An internal error has occurred.
最近项目中又增加了新的模块,项目的代码又多了不少.运行的时候总是报如下错误 Exception in thread "http-apr-80-exec-6" java.lang.O ...
- swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明
关于 swift 中的open ,public ,fileprivate,private, internal的区别 以下按照修饰关键字的访问约束范围 从约束的限定范围大到小的排序进行说明 open,p ...
- idea报错:error java compilation failed internal java compiler error
idea下面报如下问题 error java compilation failed internal java compiler error 解决办法:Setting->Compiler-> ...
- AutoMapper对internal访问级别属性的映射
最近在使用DDD重新搭建公司内部OA的架构,具体情况搭好了应该会写一下,这里说的是今天遇到的问题. 先简单说一下相关的几个部分: 1.聚合.聚合分成了两个模块:一个包含审批单据等估计至少今年不会怎么变 ...
- Tcl internal variables
Tcl internal variables eryar@163.com 在Tcl中内置了一些变量,并赋予了一定的功能.内置变量列表如下: 变量名称 功能描述 argc 指命令行参数的个数. argv ...
- c++ builder 2010 错误 F1004 Internal compiler error at 0x9740d99 with base 0x9
今天遇到一个奇怪的问题,拷贝项目后,在修改,会出现F1004 Internal compiler error at 0x9740d99 with base 0x9 ,不管怎么改,删除改动,都没用,关闭 ...
- ORA-00600: internal error code, arguments: [4194]
使用PlateSpin复制出来的一数据库服务器(Oracle 10g)在启动数据库实例时遇到"ORA-00600: internal error code, arguments: [4194 ...
- MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL
MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL 是因为目标板的芯片处于休眠 ...
- HTTP 错误 500.21 - Internal Server Error 解决方案
不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发生如下错误: HTTP 错误 500.21 - Internal Server Error处理程序“Ni ...
- 【Android Studio】android Internal HTTP server disabled 解决
报错:Cannot start internal HTTP server. Git integration, JavaScript debugger and LiveEdit may operate ...
随机推荐
- node基础-文件系统-文件写操作
文件操作频率最高的就是读跟写.nodejs的文件的读取API在<node基础-文件系统-读取文件>里已经简单介绍过,本文就简单介绍下nodejs的文件写API. nodejs的文件操作均提 ...
- Nginx浅析
Nginx浅析 Nginx是什么 总的来说,Nginx其实就是一个和apache类似的服务器软件. Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like ...
- Jenkins 构建运行java程序
我们将在Jenkins建立执行一个简单的 HelloWorld 应用程序,构建和运行Java程序.打开网址:http://localhost:8080/jenkins 第1步- 转到Jenkins 仪 ...
- dtcp格式定义
common name type optional comment id string y Content id version string y DTCP version. "1.0&qu ...
- 微软职位内部推荐-Software Development Engineer II_Commerce
微软近期Open的职位: Are you looking for a high impact project that involves processing of billions of dolla ...
- node 随便升级到最新版本的遭遇
将node 升级到最新版本后,创建一个RN新项目,执行:react-native init AwesomeProject 遇到: error An unexpected error occurred ...
- 《Linux内核分析》第一周——计算机是如何工作的?
杨舒雯 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 课程内容 1.诺曼依体系 ...
- linq to sql中的自动缓存(对象跟踪)
linq to sql中,对于同一个DataContext上下文环境,根据表主键选择记录时(当然这里所指的“记录”会自动转成“对象”),如果该记录已经被select过,默认情况下会被自动缓存下来,下次 ...
- Java 笔记——在 IDEA 中使用 Maven 配置和使用 MyBatis
1.前言 MyBatis 是什么? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. ...
- ElasticSearch 2 (2) - Setup
ElasticSearch 2.1.1 (2) - Setup Installation Elasticsearch can be started using: $ bin/elasticsearc ...