Default access modifier in C#

可紊 提交于 2019-11-27 23:38:45

Any member will always have the most restrictive one available - so in this case the accessibility of objectA is private. (Assuming it's an instance variable. It makes no sense as a local variable, as they don't have any access rules as such.)

So this:

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

is equivalent to this:

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

The "default to most private" means that for types, the accessibility depends on the context. This:

class Outer
{
    class Nested
    {
    }
}

is equivalent to this:

internal class Outer
{
    private class Nested
    {
    }
}

... because you can't have a private non-nested class.

There's only one place where adding an explicit access modifier can make something more private than it is without, and that's in property declarations:

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();
}
fedotoves

It is private by default.

َََََ

As a class member: private.

If it's a local variable declared within the body of a method, it has no accessibility outside that method. But I'm guessing you already knew that.

For class members and struct members, including nested classes and structs, private is the default.

For classes and structs - internal is the default

You can check out MSDN for further reading..

The class/type itself will default to "internal". The object you create will default to "private".

Classes and structs are declared as internal by default!

Read more here

Saroj Manik

The access specifier of class is internal.

The access specifier of a variable is private.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!