A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 古古头 中级黑马   /  2012-7-3 13:05  /  1648 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

“通常,成员的可访问性低于包含成员的类型的可访问性。 如果由成员实现接口方法或重写已在公共基类中定义的虚拟方法时,内部类的公共成员可以从外部程序集访问。”
MSDN上的,原文是这样,我觉得“内部类”三个字翻译的不好,实际上是internal类,不是nested类。
它说的是什么意思,如果是internal类的话,在别的程序集写都写不出来,还怎么访问它的公共成员?
是不是涉及到反射方面的?

访问修饰符(C# 编程指南).png (22.9 KB, 下载次数: 52)

MSDN网页截图

MSDN网页截图

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

4 个回复

倒序浏览
1,一个内部类被嵌套多少层并不重要,他能透明的访问所有它所嵌入的外围类的所有成员;
2,每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了(某个接口的)实现,对内部类都没有影响;
3,内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象的信息相互独立。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
许庭洲 发表于 2012-7-3 13:24
1,一个内部类被嵌套多少层并不重要,他能透明的访问所有它所嵌入的外围类的所有成员;
2,每个内部类都能 ...

但是,我问的不是关于内部类(nested)的知识,而是关于内部访问的类(internal),MSDN原句的翻译有点问题,我已经说明了,他说的是用internal关键字修饰的供程序集内部访问的类。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
“However, a public member of an internal class might be accessible from outside the assembly if the member implements interface methods or overrides virtual methods that are defined in a public base class.”,原句如上。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
古古头 发表于 2012-7-3 14:09
但是,我问的不是关于内部类(nested)的知识,而是关于内部访问的类(internal),MSDN原句的翻译有点问 ...

4,internal修饰的类表明只有程序集内部才能访问,老外的设计是基于C#没有友元的概念,想把关系密切的几个类可以打破封装,相互访问,同时对外保持封装性,于是设计一个internal类。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马