C#中的默认访问修饰符

时间:2010-09-09 10:04:51

标签: c# object access-modifiers

如果我要创建一个像下面这样的新对象,默认情况下会有哪个访问修饰符?

Object objectA = new Object();

8 个答案:

答案 0 :(得分:33)

任何成员都将拥有最严格的成员 - 因此在这种情况下,objectA的可访问性为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

答案 1 :(得分:3)

void Foo()
{
    // private in method scope
    Object objectA = new Object();
}

class Bar()
{
    // private in class scrope
    Object objectA = new Object();
}

答案 2 :(得分:3)

默认为私人。

答案 3 :(得分:2)

作为班级成员:private

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

答案 4 :(得分:2)

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

对于类和结构 - internal是默认的

您可以查看MSDN以便进一步阅读..

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

了解更多here

答案 7 :(得分:0)

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

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