C#基础-可访问性-public、ptotected、protected internal、internal、private

1.类型的可访问性工具

 

a.关键字有public、internal,其中public表示该类型对于程序集均可见、internal表示该类型仅对当前程序集可见。此处的类型能够为类、接口、结构等。spa

 

b.若是不显式指定类型的访问行,internal为类型的默认值。code

 

c.友元程序集接口

应用场景:公司的TeamA在程序集中定义了一组工具类型(UtilityType),可访问性为internal,公司的TeamB但愿在另外的程序集使用这些类型。ci

若是直接将工具类型修改成public,其它使用TeamA程序集的团队或者公司就能够修改和使用UtilityType中的类型,这显示是不合理的。it

可否将UtilityType定义internal,可是TeamB仍是可以使用它们呢?table

使用InternalsVisibleTo的Attribute,TeamB便可自由使用TeamA中的UtilityTypeclass

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#规定重写方法的可访问性必须跟基类方法的可访问性相同,访问限制更宽松都不行。
相关文章
相关标签/搜索