C#中的默认访问修饰符

r.r*_*r.r 13 c# object access-modifiers

如果我将创建一个如下所示的新对象,默认情况下它具有哪个访问修饰符?

Object objectA = new Object();
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 33

任何成员总是拥有最严格的成员 - 所以在这种情况下,可访问性objectAprivate.(假设它是一个实例变量.它作为局部变量没有意义,因为它们没有任何访问规则.)

所以这:

class Foo
{
    Object objectA = new Object();
}
Run Code Online (Sandbox Code Playgroud)

相当于:

internal class Foo
{
    private Object objectA = new Object();
}
Run Code Online (Sandbox Code Playgroud)

"默认为最私密"意味着对于类型,可访问性取决于上下文.这个:

class Outer
{
    class Nested
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

相当于:

internal class Outer
{
    private class Nested
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

...因为你不能有一个私有的非嵌套类.

只有一个地方,添加一个显式访问修饰符可以使某些东西比它没有更私密,并且在属性声明中:

public string Name { get; set; } // Both public

public string Name { get; private set; } // public get, private set
Run Code Online (Sandbox Code Playgroud)