Модификатор доступа по умолчанию в C # - PullRequest
13 голосов
/ 09 сентября 2010

Если я создам новый объект, подобный следующему, какой модификатор доступа у него будет по умолчанию?

Object objectA = new Object();

Ответы [ 8 ]

33 голосов
/ 09 сентября 2010

У любого участника всегда будет самый ограниченный доступный, поэтому в этом случае доступность 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
3 голосов
/ 09 сентября 2010

По умолчанию это личное.

1003 *

3 голосов
/ 09 сентября 2010
void Foo()
{
    // private in method scope
    Object objectA = new Object();
}

class Bar()
{
    // private in class scrope
    Object objectA = new Object();
}
2 голосов
/ 09 сентября 2010

Для членов класса и членов структуры, включая вложенные классы и структуры, по умолчанию используется private.

Для классов и структур - по умолчанию внутреннее

Вы можете проверить MSDN для дальнейшего чтения ..

2 голосов
/ 09 сентября 2010

Как ученик: private.

Если это локальная переменная, объявленная в теле метода, она не имеет доступа вне этого метода. Но я предполагаю, что вы уже знали это.

0 голосов
/ 16 августа 2014

Спецификатор доступа класса является внутренним.

Спецификатор доступа к переменной является личным.

0 голосов
/ 09 сентября 2010

Классы и структуры объявлены как внутренние по умолчанию!

Подробнее здесь

0 голосов
/ 09 сентября 2010

Сам класс / тип по умолчанию будет "внутренним". Созданный вами объект по умолчанию будет "закрытым".

...