Default access modifier in C#

房东的猫 提交于 2019-11-26 21:33:29

问题


If I will create a new object like the following, which access modifier will it have by default?

Object objectA = new Object();

回答1:


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



回答2:


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

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



回答3:


It is private by default.

َََََ




回答4:


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.




回答5:


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..




回答6:


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




回答7:


Classes and structs are declared as internal by default!

Read more here




回答8:


The access specifier of class is internal.

The access specifier of a variable is private.



来源:https://stackoverflow.com/questions/3675575/default-access-modifier-in-c-sharp

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