C#中的访问修饰符
1. 简述 private、 protected、 public、 internal 修饰符的访问权限。
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
2、区分internal和protected
C#中 protected internal 和 internal 的区别
protected: 奶奶有一张银行卡,妈妈可以用,女儿也可以用,隔壁老赵不可以用(因为老赵跟奶奶没有继承关系)
internal: 王总有一张银行卡,秘书可以用,经理可以用,王总儿子不可以用(因为银行卡属于公家财务,只能由公司内部人员【同一个程序集】使用,王总儿子虽然继承王总,但是他不是公司内部人员,所以也不能公款私用)
PS: 如果各个程序集使用了相同的强命名,那么internal也可以在不同的程序集下使用,就比如上面的internal例子,
王总有一张银行卡(而且还有一本存折【存折相当于强命名】),同时王总的儿子也有一本存折【一样的强命名】,那么王总的儿子也可以使用了,隔壁老王也有同样的存折【强命名】所以他也可以取钱!!
private<protected/internal<public 这个很明显了。 关键是protected和internal的问题。 protected限定的是只有在继承的子类中才可以访问,可以跨程序集 internal限定的是只有在同一个程序集中才可以访问,可以跨类 所以它们是有点交叉的。 当一个CLASS是ITERNAL的时候,要求其所有的成员的限定范围不能大于internal。 所以,当一个INTERNAL的CLASS写PROTECTED的时候,就需要两个限定符了: internal protected 这样,限定了访问范围是:本程序集、继承的子类。 因此,关系是: private<internal protected<internal/protected<public internal和protected的具体范围大小就不能准确的界顶了。
.net中的程序集就是一个编译器直接生成的dll或可执行的exe文件,包含程序集清单、元数据和MSIL等。是一个或者多个类型定义及资源文件的集合体。
说了半天,程序集里到底有什么呢。作为一堆数据集,程序集的数据可以分为:类型元数据,程序元数据,IL代码,资源。
先说下什么是元数据,元数据一般就是指描述自身的数据。
程序集元数据:包含程序集的版本信息,安全信息,签名等。
类型元数据:记录了程序集将引用了哪些类,用户自定义了哪些类,字段,数据类型等一系列信息(VS的编程助手靠的就是反射获取类型元数据)。
IL代码:MSIL,微软中间语言,微软跨语言的根基所在,所有的C#代码都编译成IL代码,保存在程序集中,在被CLR加载后,由JIT调用BCL,FTL即时编译成机器码来让CPU运行。
C#中的访问修饰符的更多相关文章
- php中的访问修饰符 private、protected、public的作用范围
1. private 只能在类内部使用 2. protected 可以在类内部和继承类里使用.类外部不能使用[即实例化后的对象无法调用] 3. public 全部范围适用. 4.子类复写父类中的方法时 ...
- 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)
1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. ...
- 分享知识-快乐自己:java 中的访问修饰符
1):Java中的访问修饰符: Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节. 访问控制 ...
- java中的访问修饰符
Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符.其中package代表缺省的访问权限,具体到代码中就是不写任何修饰符的 ...
- java中抽象类与接口中方法访问修饰符问题 (
1.抽象类中的抽象方法(其前有abstract修饰)不能用private.static.synchronized.native访问修饰符修饰.原 因如下:抽象方法没有方法体,是用来被继承的,所以不能用 ...
- .NET中的访问修饰符
.NET中一共有五种访问修饰符 分别是 public 公共的,访问权限最高的. private ...
- JAVA中的访问修饰符和包
一.JAVA访问修饰符 访问修饰符,用来控制类中成员的可见性 有四个访问修饰符,分别是:default,private,public,protected 1.default(默认):默认权限,不用写的 ...
- c#中的访问修饰符Protected,privet ,public, internal,和internal protected
Protected,privet ,public, internal,和internal protected的区别 Private修饰的,只能值类内部使用,外部不可以使用,子类不能直接访问,但可以通过 ...
- java中的访问修饰符详解
主要讲述一下java中protected的修饰控制范围. 在叙述protected修饰符使用之前,先来说一下java,可以发现,开发java程序是一个时时刻刻都在编写类.开发类.定义类的过程.类里面可 ...
- 01.c#中的访问修饰符
public 公开的 private 私有的,只能在当前类的内部访问 protected 受保护的,只能在当前内的内部以及该类的子类可以访问. internal 可以在同一个程序(项目)集中 ...
随机推荐
- Invalidate()(转)
原文转自 http://m.blog.csdn.net/blog/piaopiaopiaopiaopiao/41521211 使用Invalidate(TRUE)函数时,它会向消息队列中添加了WM_E ...
- 转:Android 调试桥(adb)是多种用途的工具
转自:http://my.oschina.net/xuwa/blog/1574 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态. 可以通过下列几种方法加入 ...
- passwd讲解
root:$dffjioowwf/:16274:0:999999:7::: 1用户名:密码:最近修改密码的日期:密码不能更改的天数:密码过期时间:密码需要更改期限到拉前7发出警告:宽限天数:帐号过期时 ...
- AOP相关
静态代理.动态代理与AOP: 简单易懂:http://blog.csdn.net/hejingyuan6/article/details/36203505 补充:http://layznet.itey ...
- JavaScript的数组详解
#转载请留言联系 创建数组 1.通过new Array()进行创建 var arr1=new Array(); 2.通过中括号进行创建 var arr2=[]; 计算数组的长度 var arr3=[' ...
- Spring MVC 基础篇4
Spring MVC Controller中返回数据到页面 1.使用ModelAndView 进行数据返回到请求页面 2.利用Map类型的入参进行Controller返回到页面上 3.将数据放到Ses ...
- Selenium2+python自动化31-生成测试报告【转载】
前言 最近小伙伴们总有一些测试报告的问题,网上的一些资料生成报告的方法,我试了都不行,完全生成不了,不知道他们是怎么生成的,同样的代码,有待研究. 今天小编写一下可以生成测试报告的方法.个人觉得也是最 ...
- 【转】进程、线程、 GIL全局解释器锁知识点整理
转自:https://www.cnblogs.com/alex3714/articles/5230609.html 本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线 ...
- python模块之XlsxWriter
官网Tutorial:http://xlsxwriter.readthedocs.io/tutorial Xlsx是python用来构造xlsx文件的模块,可以向excel2007+中写text,nu ...
- 洛谷 P2689 东南西北【模拟/搜索】
题目描述 给出起点和终点的坐标及接下来T个时刻的风向(东南西北),每次可以选择顺风偏移1个单位或者停在原地.求到达终点的最少时间. 如果无法偏移至终点,输出“-1”. 输入输出格式 输入格式: 第一行 ...