Существуют ли частные классы в С#, кроме классов Inner?
Концепция частного класса в С#
Ответ 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){
}
}
}