C#基础-可访问性-public、ptotected、protected internal、internal、private
2013-12-04 22:17
429 查看
1.类型的可访问性
a.关键字有public、internal,其中public表示该类型对于程序集都可见、internal表示该类型仅对当前程序集可见。此处的类型可以为类、接口、结构等。
b.如果不显式指定类型的访问行,internal为类型的默认值。
c.友元程序集
应用场景:公司的TeamA在程序集中定义了一组工具类型(UtilityType),可访问性为internal,公司的TeamB希望在另外的程序集使用这些类型。
如果直接将工具类型修改为public,其它使用TeamA程序集的团队或者公司就可以修改和使用UtilityType中的类型,这显示是不合理的。
能否将UtilityType定义internal,但是TeamB还是能够使用它们呢?
使用InternalsVisibleTo的Attribute,TeamB即可自由使用TeamA中的UtilityType
a.关键字有public、internal,其中public表示该类型对于程序集都可见、internal表示该类型仅对当前程序集可见。此处的类型可以为类、接口、结构等。
b.如果不显式指定类型的访问行,internal为类型的默认值。
c.友元程序集
应用场景:公司的TeamA在程序集中定义了一组工具类型(UtilityType),可访问性为internal,公司的TeamB希望在另外的程序集使用这些类型。
如果直接将工具类型修改为public,其它使用TeamA程序集的团队或者公司就可以修改和使用UtilityType中的类型,这显示是不合理的。
能否将UtilityType定义internal,但是TeamB还是能够使用它们呢?
使用InternalsVisibleTo的Attribute,TeamB即可自由使用TeamA中的UtilityType
usingSystem.Runtime.CompilerServices; //当前程序集的UserGroup类型可由TeamB的任何代码访问 [assembly:InternalsVisibleTo("TeamB")] namespaceTeamA { classUtilityType
{ }
}
2.成员的可访问性
public | 所有程序集、所有方法都可以访问 |
protectedinternal | 当前程序集或者派生类中可用 |
protected | 派生类可用(可在不同程序集) |
interna | 当前程序集可用 |
private | 当前类可用 |
a.任何成员想要被访问,都需要在可见的类型内定义。比如说AssemblyA中定义了一个internal类型,该类型有一个public方法。AssemblyB中就不能使用AssemblyA中的这个public方法。因为internal类型对AssemblyB不可用。
b.成员的默认可访问性为private
c.接口成员的可访问性不需要手工指定,默认为public
d.C#规定重写方法的可访问性必须跟基类方法的可访问性相同,访问限制更宽松都不行。
相关文章推荐
- C#基础知识——public、private、protected、internal
- [C#基础知识]之private、protected、public和internal的区别
- C#访问修饰符(public、protected、internal、private的比较)
- C#访问修饰符(Public/Private/Protected/Internal)
- c#中public,private,protected,internal的区别
- c# 类的public private internal protected的区别
- C# 中public、protected、internal 、private学习
- c# 修饰词public, protected, private,internal,protected的区别
- C#中public、private、protected、internal、protected internal
- C#中的访问修饰符(public/private/protected/internal/protected internal)
- C#用代码private protected public internal的区别
- C# 修饰符 public、protected、internal 或 private 可访问性级别
- C#用代码private protected public internal的区别
- c# 修饰词public, protected, private,internal,protected的区别(2010-01-15)
- C#中五种访问修饰符作用范围 public、private、protected、internal、protected internal
- c#中访问修饰符public,private,protected,internal,protected internal的区别
- c#中public,private,protected,internal的区别
- C#访问修饰符:public、protected、internal、private
- 详解C#防访问修饰符:public,private,protected,internal
- C#共有五种访问修饰符:public、private、protected、internal、protected internal.