13

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

Object objectA = new Object();
4

8 回答 8

33

任何成员都将始终拥有最严格的可用成员 - 因此在这种情况下,可访问性objectAis private。(假设它是一个实例变量。作为局部变量没有任何意义,因为它们本身没有任何访问规则。)

所以这:

class Foo
{
    Object objectA = new Object();
}

相当于:

internal class Foo
{
    private Object objectA = new Object();
}

“默认为最私有”意味着对于类型,可访问性取决于上下文。这:

class Outer
{
    class Nested
    {
    }
}

相当于:

internal class Outer
{
    private class Nested
    {
    }
}

...因为您不能拥有私有的非嵌套类。

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

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

public string Name { get; private set; } // public get, private set
于 2010-09-09T10:07:04.000 回答
3
void Foo()
{
    // private in method scope
    Object objectA = new Object();
}

class Bar()
{
    // private in class scrope
    Object objectA = new Object();
}
于 2010-09-09T10:06:55.880 回答
3

默认情况下它是私有的。

َََََ

于 2010-09-09T10:07:23.640 回答
2

作为班员:private

如果它是在方法体内声明的局部变量,则它在该方法之外没有可访问性。但我猜你已经知道了。

于 2010-09-09T10:06:43.907 回答
2

对于类成员和结构成员,包括嵌套类和结构,private 是默认值。

对于类和结构 - 内部是默认值

您可以查看MSDN以进一步阅读。

于 2010-09-09T10:08:13.793 回答
0

类/类型本身将默认为“内部”。您创建的对象将默认为“私有”。

于 2010-09-09T10:07:31.113 回答
0

默认情况下,类和结构声明为内部!

在这里阅读更多

于 2010-09-09T10:07:41.067 回答
0

类的访问说明符是内部的。

变量的访问说明符是私有的。

于 2014-08-16T19:16:07.410 回答