закрытый класс вне пространства имен - PullRequest
0 голосов
/ 04 мая 2011

Я хочу создать класс вне пространства имен, чтобы его модификатором доступа по умолчанию было «PRIVATE». Я делаю так:

namespace KnowStructs
{
    class Clas1 {}
}

class MyClass {}

Но все же мой класс 'MyClass' называется Внутренним, когда я смотрю в Reflector. Кто-нибудь может мне помочь.

Ответы [ 3 ]

2 голосов
/ 04 мая 2011

С Уровни доступности :

Типы верхнего уровня, которые не вложены в другие типы, могут иметь только внутренний или общедоступный доступ. Доступность по умолчанию для этих типов - внутренняя.

и

Модификаторы доступа не разрешены в пространствах имен. Пространства имен не имеют ограничений доступа.

и для личное :

Закрытые члены доступны только внутри тела класса или структуры, в которой они объявлены

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

Итак, что бы вы ни пытались сделать, я этого не понимаю. Как может быть полезен закрытый тип верхнего уровня? Никакой другой код не сможет ссылаться на него (каким-либо образом, даже если он имеет, например, статические фабричные методы).

1 голос
/ 04 мая 2011

Если разрешен закрытый класс, который не является вложенным типом, что бы это значило? Если он более строг, чем internal, то как бы вы его использовали или создали экземпляр. Любой вариант использования потребует, как минимум, internal. Я хотел бы посмотреть, как вы собираетесь его использовать.

Это просто не имеет никакого логического смысла.

Принимая во внимание, что закрытый вложенный класс относится к родительскому классу. Если бы это было internal, вы все равно сможете создать экземпляр в сборке.

Таким образом, для классов, не имеющих модификатора, по умолчанию internal для не вложенных типов и private для вложенных типов, поскольку .Net всегда применяет наиболее ограниченный доступ, когда модификатор не указан.

0 голосов
/ 04 мая 2011

Вы можете сделать класс internal, если хотите, чтобы классы были доступны только в вашем пространстве имен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...