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. lamp.phpstudy.net

    phpStudy phpStudy » PHP教程 » phpStudy for Linux (lnmp+lamp一键安装包) phpStudy for Linux (lnmp+lamp一键安装包) ...

  2. Java多线程之线程结束清理

    该事例说明了清理工作必须要放在finally块中 package Thread.Interrupting; import java.util.concurrent.TimeUnit; class Ne ...

  3. Python进阶02 文本文件的输入输出

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python具有基本的文本文件读写功能.Python的标准库提供有更丰富的读写功能 ...

  4. Perl模块的安装方法

    1. 下载离线安装包 *.tar.gz的形式解包后,#perl Makefile.PL#make#make install 2. 在联网的情况下,通过CPAN安装# perl -MCPAN -e sh ...

  5. c# as

    as:用于检查在兼容的引用类型之间执行某些类型的转换. Employee myEmployee = myObject as Employee; if (myEmployee != null) { } ...

  6. Oracle 11g新参数USE_LARGE_PAGES与AMM使用 (转载)

    在之前的文章(http://space.itpub.net/17203031/viewspace-774843)中,笔者介绍了如何在Linux 2.6内核中配置HugePage以及AMM与其的不兼容性 ...

  7. onmousemove和onmouseout事件的调用,和js使用双引号、单引号的时候应该注意的问题

    使用js的时候,统一使用双引号,然后通过反斜杠进行转义 ①如果同时使用单引号.和双引号的情况下容易出现问题,导致标签中表示的事件不能调用, ②导致由于标签没有封口而出现样式布局错误 <!DOCT ...

  8. hitTest方法与PointInside方法

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  9. Android设置不被系统设置改变的字体大小

    原因 从4.0开始,系统设置中“显示”可以对字体大小进行配置,这会影响到TextView等控件中文字显示的大小. 解决方案 在自定义的Activity中重写getResources方法 @Overri ...

  10. android EditText 只允许输入指定字符

    实现只允许只入数字和字符 方法一:在XML文件中实现布局如下: <EditText android:layout_width="match_parent" android:l ...