Почему мои классы закрыты по умолчанию в Visual Studio? - PullRequest
7 голосов
/ 27 мая 2009

Когда я создаю новый файл класса, Visual Studio по умолчанию не делает его общедоступным. Могу ли я изменить это?

Ответы [ 5 ]

11 голосов
/ 27 мая 2009

По умолчанию класс без спецификатора доступа является внутренним, а член по умолчанию является закрытым. Это позволяет максимально ограничить видимость и тем самым увеличить инкапсуляцию.

Публикация нового класса, даже не задумываясь об этом, разрушает всю идею инкапсуляции.

Шаблон класса, который VS использует для создания нового класса, можно найти в этом zip-файле (в случае CSharp):

C: \ Program Files \ Microsoft Visual Studio 8 \ Common7 \ IDE \ ItemTemplates \ CSharp \ 1033 \ Class.zip или C: \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 при использовании VS Orcas

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

Источник

1 голос
/ 27 мая 2009

Существуют и другие проблемы с шаблонами кода по умолчанию - например, они не совместимы с StyleCop «из коробки», поскольку строки «using» находятся за пределами объявления пространства имен.

Вы можете использовать ReSharper для создания ваших файлов классов из шаблонов, что позволит вам поместить любой код в шаблон. Вот что я делаю:)

0 голосов
/ 27 мая 2009

Я не думаю, что вы можете изменить опцию в VS так, чтобы все созданные классы были публичными по умолчанию (но я посмотрю на это.)

Я бы подумал, что если у вас нет особой необходимости объявлять все ваши классы общедоступными (и я не могу думать ни о каких), вам следует оставить значение по умолчанию таким, как есть. Это позволяет вам принимать решения о том, какие классы являются публичными, а какие должны оставаться внутренними. На мой взгляд, хороший вариант дизайна будет диктовать, что классы объявлены как «внутренние» по умолчанию.

0 голосов
/ 27 мая 2009

Вы имеете в виду, что сам класс недоступен в других классах? Или вы имеете в виду, что все содержимое файла по умолчанию имеет частный доступ?

Если вы хотите, чтобы класс был виден в других классах, вам просто нужно убедиться, что пространство имен видно в другом классе (с ключевым словом «using» в c # или просто иметь их в том же пространстве имен).

Не знаю, на каком языке вы говорите, но в c # все методы, переменные-члены, свойства и т. Д. По умолчанию имеют значение private. Если вы хотите, чтобы они были общедоступными, вам нужно индивидуально указать это для каждого участника. Я не думаю, что это можно изменить в C #.

0 голосов
/ 27 мая 2009

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

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