Подтвердить что ты не робот

Концепция частного класса в С#

Существуют ли частные классы в С#, кроме классов Inner?

4b9b3361

Ответ 1

Просто НЕТ. Ничего, кроме его во вложенном классе

  • Классы и структуры, не вложенные в другие классы или структуры, могут быть либо общедоступными, либо внутренними. Тип, объявленный как открытый, доступен любым другим типом. Тип, объявленный как внутренний, доступен только для типов внутри одной и той же сборки. Классы и структуры объявляются как по умолчанию, если только ключевое слово public не добавлено в определение класса.

  • Определения класса или структуры могут добавить внутреннее ключевое слово, чтобы сделать их уровень доступа явным. Модификаторы доступа не влияют на сам класс или структуру - он всегда имеет доступ к самому себе и ко всем своим членам.

  • Элементы структуры, включая вложенные классы и структуры, могут быть объявлены как общедоступные, внутренние или частные. Члены класса, включая вложенные классы и структуры, могут быть общедоступными, защищенными внутренними, защищенными, внутренними или частными. Уровень доступа для членов класса и членов структуры, включая вложенные классы и структуры, по умолчанию является закрытым. Частные вложенные типы недоступны извне содержащего типа.

  • Производные классы не могут иметь большую доступность, чем их базовые типы. Другими словами, у вас не может быть открытого класса B, который происходит от внутреннего класса A. Если это было разрешено, это привело бы к тому, что A публично, потому что все защищенные или внутренние члены A доступны из производного класса.


    Вы можете включить определенные другие сборки для доступа к вашим внутренним типам с помощью InternalsVisibleToAttribute.

Ответ 2

Нет, нет. Вы не можете иметь закрытый класс, если он не вложен.

Ответ 3

В каком сценарии для другого класса вам нужен класс 'private'?

Вы можете использовать модификатор internal для создания класса, который отображается только в текущей сборке.

// the class below is only visible inside the assembly in where it was declared
internal class MyClass
{
}

Ответ 4

Нет. Какова будет область действия такого класса?

Ответ 5

Я нашел информацию в С# модификаторе доступа по умолчанию метода Main() также быть полезным в связи с этим вопросом, запрограммированным на других языках. В приведенном ниже примере MyClass будет внутренним, а static void main будет закрытым. По мере того, как Питер Талиор намекал на другие языки, я думаю, что это явно стоит. Visual Studio в зависимости от проекта создает исходный файл cs программы, который похож на ниже; представление класса на вкладке "Вид" в Visual Studio, как указано в статье связанного потока стека, может быть полезно при проверке модификаторов доступа.

namespace MyNamespace{
    class MyClass{
        static void Main(string[] args){
        }
    }
}