当前位置:  开发笔记 > 编程语言 > 正文

内部类的公共方法与内部方法

如何解决《内部类的公共方法与内部方法》经验,为你挑选了5个好方法。

internal class Foo声明将覆盖的可访问性public void Fee()的方法,有效地使其内部.

在这种情况下,对方法使用internal vs. public将产生相同的效果.在这样的情况下,我选择公共方法与内部方法的唯一原因是,如果您选择这样做,将在未来版本中轻松过渡到公共类.



1> Reed Copsey..:

internal class Foo声明将覆盖的可访问性public void Fee()的方法,有效地使其内部.

在这种情况下,对方法使用internal vs. public将产生相同的效果.在这样的情况下,我选择公共方法与内部方法的唯一原因是,如果您选择这样做,将在未来版本中轻松过渡到公共类.



2> 小智..:

答案中唯一缺少的是你为什么要这样做?

有些库有很多类,这些类不适合要触摸的库的使用者,但是它们必须继承标记为public的接口.例如,我有一个带有继承IComparer接口的类的库,但它只在内部使用,我不想混淆我的库的公共方面.如果我将已实现的Compare函数标记为内部,则编译器会抱怨我没有实现接口IComparer.

那么如何成功实现界面,同时防止它在我的图书馆的公共方面被访问?将该类标记为内部,但将已实现的函数标记为public.



3> Marc Gravell..:

实际上 - 如果你使用反射,会有很大的不同; 特别是,如果您尝试通过反射访问内部方法,Silverlight可能会非常沮丧,即使您有访问权限也是如此.我已经看到过必须公开方法以使代码在Silverlight上运行的情况,即使它适用于常规.NET.

您可能会在常规.NET中找到相同的部分信任.


这些是我一直感兴趣的那种肮脏的细节.虽然,通常如果有人使用反射来访问我班级中的隐藏成员,我不会担心他们是否很难.

4> 小智..:

当您希望内部类实现接口时,它会有所不同.作为某个接口的实现的方法必须是Public.



5> eglasius..:

您是对的,费用和Fi都可以同等使用.

从CSharp语言规范3.0,3.5.2下:

在程序P中的类型T中声明的嵌套成员M的可访问域定义如下(注意M本身可能是一个类型):

•如果M的已声明可访问性是公共的,则M的可访问域是T的可访问域.

因此,即使费用被宣布为公开,它也将像Foo(即内部)一样可访问.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有