C#内部访问修饰符

时间:2016-03-09 18:42:00

标签: c# access-modifiers

我想知道是否有人能想到以下情况适用的情况。

public class A
{
    private class B
    {
         internal string s { get; set;}
    }
}

所以我知道内部意味着只有同一个程序集中的类才能访问,但在上述情况下,这不适用,因为B类是私有的。如果这种情况可能有一个用例,我只是好奇。根据用例,我的意思是有时间将访问修饰符设置在私有类内部。

2 个答案:

答案 0 :(得分:1)

我不这么认为。在C#中,部分类不能跨越程序集,因此我看不到这样的情况:同一程序集中的另一个类型定义可以具有与外部程序集中的类型定义不同的s访问权限。内部是仅在程序集级别应用的辅助功能修饰符,因此,在这种情况下,我认为internal在功能上等同于public。然而,我很高兴被证明是错的。

答案 1 :(得分:1)

对于编译器来说无关紧要。但是,对于其他人阅读或重构您的代码,这表明您的意图。

如果属性实际上是一个装配细节,您可能希望将其保持在内部。这样,当某人因某种原因需要公开class B时,他就不需要考虑这个属性是否应该可见,或者不会记录它。此外,如果要将其隐藏起来,他也不会意外地将财产公之于众。

您可以认为"如果此类是公开的,那么访问修饰符是什么?"