C#中的默认访问修饰符

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

Object objectA = new Object(); 

任何成员总是拥有最严格的成员 – 因此在这种情况下, 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 
 void Foo() { // private in method scope Object objectA = new Object(); } class Bar() { // private in class scrope Object objectA = new Object(); } 

它默认是私有的。

作为class级成员: private

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

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

对于类和结构 – internal是默认值

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

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

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

在这里阅读更多

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

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