如果我创建一个类似下面这样的新对象,它默认会有哪个访问修饰符?
Object objectA = new Object();
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();
}
private
。类/类型本身将默认为“internal”。您创建的对象将默认为“private”。
默认情况下,类和结构体被声明为内部的!
在这里阅读更多信息。
类的访问修饰符是 internal。
变量的访问修饰符是 private。