假设我们有一个名为class1的类。
class1有几个属性和方法,我们决定将class1的访问说明符指定为internal。
现在,我们可以将class1方法的访问说明符设置为public吗?
答案 0 :(得分:7)
对于您的具体问题,声明为内部的第1类可以使用公共方法。
为什么?
你当然可以将课程标记为 内部,但那是不同的 使其公共成员内部化。 例如,假设你有一个班级 它实现了一个公共接口。 即使班级可能是内部的, 一个实例可能仍然“离开了 装配“通过从...返回 另一个(公共)课程的成员。那 必须引用实例 通过它实现的接口 而不是类名本身(作为 上课不为外界所知 程序集)但公共方法可以 仍被称为。
如果公共方法不是 我怀疑,实现任何接口 它只会对a产生影响 很少有你的反思案例 可能不关心。
社区维基 - 因为应该归功于Jon Skeet
答案 1 :(得分:1)
通过规则访问说明符的方法和属性不能比包含它的类更容易访问。
但我试过这个:
internal class Test
{
public string Testing{get;set;}
}
和它编译,没有任何异常!我认为没关系因为测试将无法在我们声明的命名空间程序集之外访问,所以公共属性不会有任何区别。
这不起作用:
private class Test
{
public string Testing{get;set;}
internal string TestingAgain{get;set;}
}
答案 2 :(得分:1)
是的,您可以为public
/ internal
/ etc类型的成员设置private
。
正如其他回复所指出的那样,外部代码将无法看到属性,除非它能看到类型 - 但有很多细微差别:
但是框架中有很多其他代码使用 reflection 并要求公共可访问性:
XmlSerializer
)可能需要公共成员因此,即使您的代码仅由本地程序集引用,仍然有很多理由考虑public
而不仅仅是internal
。