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以便进一步阅读..
类/类型本身将默认为“内部”。 您创建的对象将默认为“私有”。
默认情况下,类和结构声明为内部!
在这里阅读更多
类的访问说明符是内部的。
变量的访问说明符是私有的。
- 如何调用C#DLL的函数来接受来自C#的stringstream类型的参数?
- 致命错误C1083 – 无法打开包含文件:“windows.h”:没有这样的文件或目录
- 在Visual 2010中,C#窗体中是否有转发器控件? 还是另类?
- 操作方法:在C#中实现短路反向三元运算符? 有关系吗?
- 如何从ASP.NET MVC解决方案调用外部URL
- 如何在消息控制器之类的对话框之外访问Bot Framework ConversationData?
- 使用“Expression Bodied Functions and Properties”有什么好处
- 使用两种forms缩放
- 如何将BouncyCastle X509Certificate转换为X509Certificate2?