C#基础-可访问性-public、ptotected、protected internal、internal、private
1.类型的可访问性
a.关键字有public、internal,其中public表示该类型对于程序集都可见、internal表示该类型仅对当前程序集可见。此处的类型可以为类、接口、结构等。
b.如果不显式指定类型的访问行,internal为类型的默认值。
c.友元程序集
应用场景:公司的TeamA在程序集中定义了一组工具类型(UtilityType),可访问性为internal,公司的TeamB希望在另外的程序集使用这些类型。
如果直接将工具类型修改为public,其它使用TeamA程序集的团队或者公司就可以修改和使用UtilityType中的类型,这显示是不合理的。
能否将UtilityType定义internal,但是TeamB还是能够使用它们呢?
使用InternalsVisibleTo的Attribute,TeamB即可自由使用TeamA中的UtilityType
using System.Runtime.CompilerServices; //当前程序集的UserGroup类型可由TeamB的任何代码访问
[assembly: InternalsVisibleTo("TeamB")]
namespace TeamA
{
class UtilityType{ }}
2.成员的可访问性
public | 所有程序集、所有方法都可以访问 |
protected internal |
当前程序集或者派生类中可用 |
protected |
派生类可用(可在不同程序集) |
interna | 当前程序集可用 |
private |
当前类可用 |
a.任何成员想要被访问,都需要在可见的类型内定义。比如说AssemblyA中定义了一个internal类型,该类型有一个public方法。AssemblyB中就不能使用AssemblyA中的这个public方法。因为internal类型对AssemblyB不可用。
b.成员的默认可访问性为private
c.接口成员的可访问性不需要手工指定,默认为public
d.C#规定重写方法的可访问性必须跟基类方法的可访问性相同,访问限制更宽松都不行。
C#基础-可访问性-public、ptotected、protected internal、internal、private的更多相关文章
- C# 成员默认访问权限(public、private、protected、internal)
C# 成员默认访问权限(public.private.protected.internal) 来源 https://www.cnblogs.com/yezongjie/p/20181121Access ...
- 可访问性级别的C# 修饰符
使用访问修饰符 public.protected.internal 或 private 可以为成员指定以下声明的访问级别之一. http://keleyi.com/a/bjad/3ccfqh95.ht ...
- c# 可访问性级别
使用访问修饰符 public.protected.internal 或 private 可以为成员指定以下声明的访问级别之一. 声明的可访问性 含义 public 访问不受限制. protecte ...
- Effective Java:Ch4_Class:Item13_最小化类及其成员的可访问性
要区别一个模块是否设计良好,最重要的因素是,对于其他模块而言该模块隐藏其内部数据和其他实现细节的程度.设计良好的模块应该隐藏所有实现细节,将API与其实现清晰地隔离开来.这样,模块之间通过他们的API ...
- 【PHP面向对象(OOP)编程入门教程】13.访问类型(public,protected,private)
类型的访问修饰符允许开发人员对类成员的访问进行限制,这是PHP5的新特性,但却是OOP语言的一个好的特性.而且大多数OOP语言都已支持此特性.PHP5支持如下3种访问修饰符: public (公有的. ...
- C#中public、private、protected、internal、protected internal (转载)
在C#语言中,共有五种访问修饰符:public.private.protected.internal.protected internal.作用范围如下表:访问修饰符 说明public 公有访问.不受 ...
- (C# 基础) 类访问修饰符
C# 中有5个权限修饰符,用于控制对对象的访问权限. 1. public: 访问不受限制. namespace, enum成员,interface成员 隐式的具有public 修饰符,不能在显式添 ...
- C#中五种访问修饰符作用范围 public、private、protected、internal、protected internal
1.五种访问修饰符包括哪些? public.private.protected.internal.protected internal 2.五种访问修饰符的作用范围? public :公有访问.不受 ...
- OC基础:getter和setter,@public @protected @private 分类: ios学习 OC 2015-06-15 19:23 22人阅读 评论(0) 收藏
@public 1.公开的,公共的,可以在类的内部和外部访问. 2.类的内部:实例变量名 3.类的外部:对象->实例变量名 @protected 1.受保护的,只能在本类和子类中可以访问 2.类 ...
随机推荐
- php 防止sql注入
Q:如果把用户输入的没有任何改动的放到SQL的查询语句中,很有可能会导致SQL注入,比如说下面的例子: $unsafe_variable = $_POST['user_input']; mysql_q ...
- SQL Server 2005中的分区表(四):删除(合并)一个分区(转)
在前面我们介绍过如何创建和使用一个分区表,并举了一个例子,将不 同年份的数据放在不同的物理分区表里.具体的分区方式为: 第1个小表:2010-1-1以前的数据(不包含2010-1-1). 第2个小表: ...
- Mac 下 Maven 的命令行安装
JDK 的安装 系统的“系统偏好设置”中我们可以看到 Java的设置, Java 7(含) 之后的版本在这里可以看到. 点击进去后,可以看到独立的 Java 控制面板 注意,这里是 JRE 的版本, ...
- Android - 禁止Gridview滚动
设置gridview 的touch事件,是ACTION_MOVE 的话返回true mDragGrid.setOnTouchListener(new OnTouchListener() { @Over ...
- mysql start server faild
可能没卸载干净...在安装mysql数据库时,如果重新安装,很容易遇见apply security setting error,即在配置mysql启动服务时,在启动apply security set ...
- AOP切入点注解报错
开始学习AOP,出现如下的错误,最后发现是JDK与aspectj,aspectjweaver版本问题造成的.之后改成最新版本,代码运行正常. 利用这些特性可以进行代码的插入,比如权限,缓存结合mecm ...
- Cardinality Feedback
该特性主要针对 统计信息陈旧.无直方图或虽然有直方图但仍基数计算不准确的情况, Cardinality基数的计算直接影响到后续的JOIN COST等重要的成本计算评估,造成CBO选择不当的执行计划 O ...
- 动手学servlet(四) cookie和session
Cookie cookie是保存在客户端的一个“键值对”,用来存储用户的一些信息 cookie的应用: -在电子商务会话中标识用户 -对网站进行定制,比如你经常浏览哪些内容,就展示哪些页面给你 - ...
- Redis附加功能之Redis流水线pipeline
流水线功能的目的:通过减少客户端与服务器之间的通信次数来提高程序的执行效率. 一.通信 在一般情况下, 用户每执行一个 Redis 命令,客户端与服务器都需要进行一次通信:客户端会将命令请求发送给服务 ...
- CCombobox AddString出错
1.CComboBox放在对话框构造函数中, 这时CCombobox对象还没建立, 所以出错, 应该放在OnInitDialog()中初始化. 2. 使用的vs2005以上的IDE, 拖拉控件, 添加 ...