VS.NET по умолчанию закрытый класс - PullRequest
6 голосов
/ 02 сентября 2008

Почему Visual Studio объявляет новые классы как частные в C #? Я почти всегда переключаю их на публику, я сумасшедший?

Ответы [ 6 ]

16 голосов
/ 02 сентября 2008

Я не уверен, ПОЧЕМУ он это делает, но вот что вы делаете, чтобы Visual Studio по умолчанию создал класс как Public:

Перейдите в «Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 ″, вы найдете файл с именем Class.zip, внутри .zip откройте файл с именем Class.cs содержимое файла выглядит так:

using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;
$endif$using System.Text;   

namespace $rootnamespace$
{
    class $safeitemrootname$
    {
    }
}

Все, что вам нужно сделать, это добавить «Public» перед именем класса. Результат должен выглядеть следующим образом:

using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;
$endif$using System.Text;   

namespace $rootnamespace$
{
    public class $safeitemrootname$
    {
    }
}

Последнее, что вам нужно сделать, это сбросить все шаблоны, которые использует Visual Studio, и заставить его перезагрузить их. Команда для этого (требуется время, так что держись):

devenv /installvstemplates

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

Источник

8 голосов
/ 02 сентября 2008

Частный доступ по умолчанию кажется разумным выбором со стороны спецификаторов языка C #.

Хороший общий принцип проектирования - сделать все уровни доступа максимально ограниченными, чтобы минимизировать зависимости. У вас будет меньше шансов получить неправильный уровень доступа, если вы начнете с максимально возможного ограничения и заставите разработчика предпринять некоторые действия, чтобы сделать класс или член более заметным. Если что-то менее общедоступно, чем нужно, то это становится очевидным сразу же, когда вы получаете ошибку компиляции, но не так легко определить что-то более видимое, чем должно быть.

0 голосов
/ 02 сентября 2008

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

0 голосов
/ 02 сентября 2008

По соображениям безопасности.

Вы хотите раскрыть определенные методы, а не весь ваш класс.

0 голосов
/ 02 сентября 2008

Нет, мне всегда нужно шлепнуть это "публичное" ключевое слово в начале класса, чтобы вы не были одиноки. Думаю, дизайнеры шаблонов подумали, что начинать с самых основ было бы неплохо. Вы можете редактировать эти шаблоны, хотя в вашей установке Visual Studio, если это действительно сильно вас раздражает, но я еще не дошел до этого.

0 голосов
/ 02 сентября 2008

C ++, на основе которого создается C #, указывает, что уровень доступа к классу по умолчанию является закрытым. C # продвигает это вперед к лучшему или худшему.

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