Любая причина написать ключевое слово "private" в C#?
насколько я знаю, private
по умолчанию везде в C# (это означает, что если я не пишу public
, protected
, internal
, etc. это будет private
по умолчанию). (Пожалуйста, поправьте меня, если я ошибаюсь.)
Итак, какова причина написания этого ключевого слова или почему оно вообще существует для членов?
например, когда обработчик событий генерируется автоматически, он выглядит следующим образом:
private void RatTrap_MouseEnter(object sender, CheeseEventArgs e)
{
}
но почему он даже пишет частный, если это подразумевается и по умолчанию? Просто чтобы начинающие разработчики (которые не знают, что это c# default) знали, что это личное? Или есть разница для компилятора?
более того, есть ли случай, когда пишется "частное" (в одиночку) будет изменить доступность члена?
9 ответов
AFAIK, private по умолчанию везде в C# (это означает,что если я не пишу public, protected, internal и т. д. по умолчанию он будет приватным). (пожалуйста, поправьте меня, если ошибаюсь).
Это не правда. Типы, определенные в пространстве имен (классы, структуры, интерфейсы и т. д.)внутренние по умолчанию. Кроме того, члены в разных типах имеют разные возможности доступа по умолчанию (например, public для членов интерфейса). Подробнее см. Уровни Доступности на MSDN.
и
Итак, какова причина написания этого ключевого слова или почему оно вообще существует?
указание этого явно помогает обозначить ваше намерение сделать тип приватным, очень явно. Это помогает с ремонтопригодностью вашего кода с течением времени. Это может помочь другим разработчикам (или себе) знать, является ли член частным по умолчанию или специально и т. д.
AFAIK, private по умолчанию везде в C#
не совсем-по умолчанию используется "самый ограниченный доступ, доступный для этого объявления". Так, например, для типа верхнего уровня по умолчанию используется internal
; для вложенного типа значение по умолчанию:private
.
Итак, какова причина написания этого ключевого слова или почему оно вообще существует?
это делает его явным, что хорошо по двум причинам:
- это делает его более понятным для тех, кто не знает значения по умолчанию, в соответствии с вашим вопросом (мне никогда не нравился этот аргумент, лично, но я решил, что стоит упомянуть)
- создается впечатление, что ты сознательно решил сделать его частным, а не просто ушел с дефолтами.
что касается вашей последней части:
кроме того, есть случай, когда написание "private" (в одиночку) изменит доступность член?
да, за половину имущества более строгие, чем другие:
// Public getter, public setter
public int Foo { get; set; }
// Public getter, private setter
public int Bar { get; private set; }
Я используется идти с дефолтами везде, где я мог, но я был убежден (частично Эриком Липпертом), что ясно, что вы думали об этом и решил сделать что-то личное-хорошая идея.
лично я хотел бы, чтобы был способ сделать это для запечатанных / незапечатанных тоже для объявлений типа-возможно, нет даже есть по умолчанию. Я подозреваю, что многие разработчики (включая меня, если я не буду осторожен) оставляют классы незапечатанными только потому, что это меньше усилий, чем сделать их запечатанными.
private
добавляет визуальный беспорядок. Для тех, кто настаивает на том, что это делает вещи явными, я бы спросил: Вы тоже делаете это с математикой? Например:
var answer = a + b / c;
вы находите, что неясно без избыточных скобок вокруг b / c
?
правило в C# очень прост: по умолчанию все настолько близко к частному, насколько это может быть. так что если вам нужно что-то, чтобы быть больше видимый, чем по умолчанию, добавьте модификатор. В противном случае, не добавьте ненужные ключевые слова в код.
читаемость-не все могут знать, что private является поведением по умолчанию.
намерение - дает четкое указание на то, что вы специально объявили свойство частным (по какой-либо причине).
насколько я знаю, private по умолчанию везде в C#
явного объявления частная, значит знаю это личное. Не думаю, что это, потому что, насколько вы знаете, это по умолчанию. Это также означает, что кто-то, кто смотрит на код знает, что это такое.
нет "я думаю", "я в этом уверен", и т. д. это просто. И все на одной странице.
Я не C# разработчика. Если бы мне пришлось работать с некоторым кодом, который не был явно объявлен частная, Я бы, вероятно, предположил, что это было внутренние.
мне не нравится, когда вещи неявно установлены. Это не так ясно, как когда они заданы явно.
одна из причин явного указания видимости заключается в том, что вам не нужно думать о том, что является значением по умолчанию для контекста, в котором вы находитесь.
еще одна веская причина-потому что FxCop говорит вам сделать это.
много людей (таких как я!) регулярно программировать на нескольких языках. Будучи явным с такими вещами, мне не нужно помнить все тайные детали всех языков, на которых я программирую.