说白了

internal 修饰的东西只能在本程序集(当前项目)内被使用。

protected internal 修饰的属性/方法 可以在其他项目中,被派生类使用

例如有两个项目app1和app2.

app1是启动项目,而app2只是一个类库

  1. /*项目app2*/
  2.  
  3. namespace app2
  4.  
  5. {
  6.  
  7. internal class cInternal //该类只能在app2中使用(整个类都internal,相当于所有的属性也全都internal了)
  8.  
  9. {
  10.  
  11. public int a;//只有app2中可以使用
  12.  
  13. internal int b;//同上,只有app2中可以使用
  14.  
  15. }
  16.  
  17. public class vInternal //该类可以在app1中使用(只要引用app2即可) 但是在app2之外的其他项目中不能使用此类中被internal修饰的属性/方法
  18.  
  19. {
  20.  
  21. internal int a;//只能在app2中使用
  22.  
  23. protected internal int b;//在app2中任意使用,在app1中不可以直接使用,但是可以被app1中的继承自该类的类使用。
  24.  
  25. public int c;//app1 app2中任意使用
  26.  
  27. protected internal void Display()//在app2中任意使用,在app1中不可以直接使用,但是可以被app1中的继承自该类的类使用。
  28.  
  29. {Console.WriteLine("Hello protected Internal");}
  30.  
  31. }
  32.  
  33. }//namespace app2
  34.  
  35. /*项目app1*/
  36.  
  37. using app2;
  38.  
  39. namespace app1
  40.  
  41. {
  42.  
  43. class app1()
  44.  
  45. {
  46.  
  47. app2.cInternal InternalClass = new app2.cInternal();//!!! ERROR !!! - cInternal被internal修饰,只能在app2中使用
  48.  
  49.  app2.vInternal InternalVar = new app2.vInternal ();//OK - vInternal 被public修饰,能在任何地方使用
  50.  
  51.  InternalVar.a = ;//!!! ERROR !!! - 被internal修饰,只能在app2中使用
  52.  
  53.  InternalVar.b = ;//!!! ERROR !!! - 被protected internal修饰,不能在外部项目中直接使用。
  54.  
  55.  InternalVar.c = ;//OK
  56.  
  57. InternalVar.Display();//!!! ERROR !!! - 被protected internal修饰,不能在外部项目中直接使用。
  58.  
  59. }//classAPP1
  60.  
  61.  class InheritFromInternal:app2.vInternal//继承了vInternal,于是可以使用vInternal中被protected internal修饰的属性
  62.  
  63. {
  64.  
  65. base.a = ;//!!! ERROR !!! - 被修饰为internal的属性只能在app2中使用.
  66.  
  67. base.b = ;//OK - 被修饰为protected internal的属性可以被派生类使用.
  68.  
  69. base.Display();//OK - 被修饰为protected internal的属性可以被派生类使用.
  70.  
  71. }//classInheritFromInternal
  72.  
  73. }//namespace app1

internal in C#的更多相关文章

  1. myeclipse 内存不够用报错PermGen space 和 An internal error has occurred.

    最近项目中又增加了新的模块,项目的代码又多了不少.运行的时候总是报如下错误 Exception in thread "http-apr-80-exec-6" java.lang.O ...

  2. swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明

    关于 swift 中的open ,public ,fileprivate,private, internal的区别 以下按照修饰关键字的访问约束范围 从约束的限定范围大到小的排序进行说明 open,p ...

  3. idea报错:error java compilation failed internal java compiler error

    idea下面报如下问题 error java compilation failed internal java compiler error 解决办法:Setting->Compiler-> ...

  4. AutoMapper对internal访问级别属性的映射

    最近在使用DDD重新搭建公司内部OA的架构,具体情况搭好了应该会写一下,这里说的是今天遇到的问题. 先简单说一下相关的几个部分: 1.聚合.聚合分成了两个模块:一个包含审批单据等估计至少今年不会怎么变 ...

  5. Tcl internal variables

    Tcl internal variables eryar@163.com 在Tcl中内置了一些变量,并赋予了一定的功能.内置变量列表如下: 变量名称 功能描述 argc 指命令行参数的个数. argv ...

  6. c++ builder 2010 错误 F1004 Internal compiler error at 0x9740d99 with base 0x9

    今天遇到一个奇怪的问题,拷贝项目后,在修改,会出现F1004 Internal compiler error at 0x9740d99 with base 0x9 ,不管怎么改,删除改动,都没用,关闭 ...

  7. ORA-00600: internal error code, arguments: [4194]

    使用PlateSpin复制出来的一数据库服务器(Oracle 10g)在启动数据库实例时遇到"ORA-00600: internal error code, arguments: [4194 ...

  8. 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   是因为目标板的芯片处于休眠 ...

  9. HTTP 错误 500.21 - Internal Server Error 解决方案

    不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发生如下错误: HTTP 错误 500.21 - Internal Server Error处理程序“Ni ...

  10. 【Android Studio】android Internal HTTP server disabled 解决

    报错:Cannot start internal HTTP server. Git integration, JavaScript debugger and LiveEdit may operate ...

随机推荐

  1. java监听器(Listener)学习笔记

    现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次, ...

  2. binlog2sql使用总结

    binlog2sql是大众点评开源的一款用于解析binlog的工具,在测试环境试用了下,还不错. 其具有以下功能 1. 提取SQL 2. 生成回滚SQL 关于该工具的使用方法可参考github操作文档 ...

  3. [穷尽]ADO.NET连接字符串

    微软提供的四种数据库连接方式: System.Data.OleDb.OleDbConnection System.Data.SqlClient.SqlConnection System.Data.Od ...

  4. Js_图片切换左右点击

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...

  5. 初次接触Dynamics 365

    最近项目上需要用到微软的Dynamics 365 这个产品,Bing上搜索了一下,看了很多大佬在博客上分享了使用Dynamics 365的经验,简单了解了Dynamics 365 是什么,也有很多大企 ...

  6. 504. Base 7

    Given an integer, return its base 7 string representation. Example 1: Input: 100 Output: "202&q ...

  7. Python能做什么?

    Python作为一个功能强大,并且简单易学的编程语言而广受好评,那么Python都能做些什么呢?概括起来有以下几个方面: 1.Web开发: 2.大数据处理: 3.人工智能: 4.自动化运维: 5.云计 ...

  8. SCRUM 12.17

    今天,我们的用户统计功能终于上线了!! 大家辛苦工作了许久.我们测试的用户统计功能效果模拟如下 还有一些好消息,比如,我们的应用在小米平台收到了崩溃的反馈报告. 这说明我们留下的一些BUG暴露了出来, ...

  9. 关于sql server2008数据库的连接的几个问题及解决办法

    写在开头 不得不说给一台新的服务器配置和部署的确是个不小的工程,在这里先感谢我们的DEV焉域政同学在这方面做出的一些贡献:把安装过程极为困难的sql server2008成功安装到服务器上,并且为我们 ...

  10. TCP/IP之蓟辽督师 转

    原创: 刘欣 码农翻身 2016-11-07 本文续<TCP/IP之大明内阁>, 不了解背景的同学可以先看看上一篇文章, 当然这篇也是<TCP/IP之大明邮差>的前传, 主要讲 ...