C# 内部访问修饰符

C# Internal Access Modifier

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

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

所以我知道 internal 意味着只有 class 同一程序集中的 es 可以访问,但在上述情况下这不适用,因为 class B 是私有的。我只是好奇这个场景是否有用例。通过用例,我的意思是有没有时间将访问修饰符 internal inside private class.

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

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

如果 属性 确实是装配细节,您可能希望将其保留在内部。这样,当有人出于某种原因需要制作 class B public 时,他不需要考虑这个 属性 是否应该可见,或者不会费心记录它。另外,他不会不小心留下 属性 public 如果它是为了隐藏。

你可以认为是"What would be the access modifier if this class was public?"