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的更多相关文章

  1. C# 成员默认访问权限(public、private、protected、internal)

    C# 成员默认访问权限(public.private.protected.internal) 来源 https://www.cnblogs.com/yezongjie/p/20181121Access ...

  2. 可访问性级别的C# 修饰符

    使用访问修饰符 public.protected.internal 或 private 可以为成员指定以下声明的访问级别之一. http://keleyi.com/a/bjad/3ccfqh95.ht ...

  3. c# 可访问性级别

    使用访问修饰符 public.protected.internal 或 private 可以为成员指定以下声明的访问级别之一.   声明的可访问性 含义 public 访问不受限制. protecte ...

  4. Effective Java:Ch4_Class:Item13_最小化类及其成员的可访问性

    要区别一个模块是否设计良好,最重要的因素是,对于其他模块而言该模块隐藏其内部数据和其他实现细节的程度.设计良好的模块应该隐藏所有实现细节,将API与其实现清晰地隔离开来.这样,模块之间通过他们的API ...

  5. 【PHP面向对象(OOP)编程入门教程】13.访问类型(public,protected,private)

    类型的访问修饰符允许开发人员对类成员的访问进行限制,这是PHP5的新特性,但却是OOP语言的一个好的特性.而且大多数OOP语言都已支持此特性.PHP5支持如下3种访问修饰符: public (公有的. ...

  6. C#中public、private、protected、internal、protected internal (转载)

    在C#语言中,共有五种访问修饰符:public.private.protected.internal.protected internal.作用范围如下表:访问修饰符 说明public 公有访问.不受 ...

  7. (C# 基础) 类访问修饰符

    C# 中有5个权限修饰符,用于控制对对象的访问权限. 1. public:   访问不受限制. namespace, enum成员,interface成员 隐式的具有public 修饰符,不能在显式添 ...

  8. C#中五种访问修饰符作用范围 public、private、protected、internal、protected internal

    1.五种访问修饰符包括哪些? public.private.protected.internal.protected internal 2.五种访问修饰符的作用范围? public  :公有访问.不受 ...

  9. OC基础:getter和setter,@public @protected @private 分类: ios学习 OC 2015-06-15 19:23 22人阅读 评论(0) 收藏

    @public 1.公开的,公共的,可以在类的内部和外部访问. 2.类的内部:实例变量名 3.类的外部:对象->实例变量名 @protected 1.受保护的,只能在本类和子类中可以访问 2.类 ...

随机推荐

  1. 帝国CMS常见问题记录

    1.第一次安装,为什么找不到"增加信息"的地方?因为你未增加栏目,请先增加栏目,然后再增加信息(终极栏目下方可增加信息). 2.为什么信息管理的"信息栏目"列表不变?缓存问题,解决方法如下两种:1." ...

  2. Python语言快速入门

    Python的主提示符(>>>):是解释器告诉你它正在等待你输入的下一个语句 Python的次提示符(...):告诉你解释器正在等待你输入当前语句的其他部分 [简介] Python( ...

  3. C++学习23 虚函数详解

    虚函数对于多态具有决定性的作用,有虚函数才能构成多态.上节的例子中,你可能还未发现虚函数的用途,不妨来看下面的代码. #include <iostream> using namespace ...

  4. JAVA中关于同步与死锁的问题

    java中当多个现成同时操纵同一资源的时候需要考虑同步的问题.如车站售票,不同售票点卖同一班次车票的时候就要同步,否则卖票会有问题.下面代码模拟车站卖票: class TicketSeller imp ...

  5. Javascript同源策略对context.getImageData的影响

    在本机测试HTML5 Canvas程序的时候,如果用context.drawImage()后再用context.getImageData()获取图片像素数据的时候会抛出错:SECURITY_ERR: ...

  6. sap mm_1

    1. /nmm50 扩展视图,看那些视图没有维护的  . 2. mm60 物料清单    查看所建立的物料. 3. se11     ABAP DICTIONARY:Initial Screen 定义 ...

  7. poj 1016 Numbers That Count

    点击打开链接 Numbers That Count Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17922   Accep ...

  8. iOS 数据存储 - 归档和解归档

    这里的归档主要是用于自定义类的归档和解档.我们这里使用NSKeyedArchiver和NSKeyedUnarchiver来归档和解档. 注意:自己定义的类需要实现<NSCoding>,如: ...

  9. android点击状态分析

    android:addStatesFromChildren="true" :父类从子类中获取点击状态. android:duplicateParentState="tru ...

  10. 日志挖掘Logmnr

    日志挖掘 9.1 日志中数据用途 所有对用户数据以及数据字典的改变全部被保存在联机日志中.当然nologging,insert/*+append+/情况比较特殊除外,因此归档日志可以用来做数据库的恢复 ...