Есть ли причина писать ключевое слово "private" в C#?
насколько я знаю, private
по умолчанию везде в C# (это означает, что если я не пишу public
,protected
,internal
и т. д. это будет private
по умолчанию). (Пожалуйста, поправьте меня, если я ошибаюсь.)
Итак, какова причина писать это ключевое слово,или почему оно вообще существует для членов?
например, когда обработчик событий генерируется автоматически, он выглядит следующим образом:
private void RatTrap_MouseEnter(object sender, CheeseEventArgs e)
{
}
но почему он даже пишет private, если это подразумевается и по умолчанию? Просто чтобы начинающие разработчики (которые не знают, что это C# по умолчанию) знали, что это личное? Или есть разница для компилятора?
кроме того, есть ли случай, когда написание "private" (в одиночку) будет изменить доступность члена?
9 ответов:
AFAIK, private-это значение по умолчанию везде в C# (это означает, что если я не пишу public, protected, internal и т. д. по умолчанию он будет приватным). (пожалуйста, поправьте меня, если ошибаюсь).
Это не правда. Типы, определенные в пространстве имен (классы, структуры, интерфейсы и т. д.)внутренние по умолчанию. Кроме того, члены в разных типах имеют разные возможности доступа по умолчанию (например, public для членов интерфейса). Дополнительные сведения см. В разделе Уровни Доступности на MSDN.
и
Итак, какова причина писать это ключевое слово, или почему оно вообще существует?
указание этого явно помогает обозначить ваше намерение сделать тип приватным, очень явно. Это помогает с ремонтопригодностью вашего кода с течением времени. Это может помочь другим разработчикам (или вам самим) узнать, является ли член частным по умолчанию или специально и т. д.
AFAIK, private-это значение по умолчанию везде в C#
не совсем-по умолчанию используется "самый ограниченный доступ, доступный для этого объявления". Так, например, с типом верхнего уровня по умолчанию
internal
; для вложенного типа значение по умолчанию:private
.Итак, какова причина написать это ключевое слово, или почему оно вообще существует?
это делает его явным, что хорошо по двум причинам:
- It делает его более понятным для тех, кто не знает значения по умолчанию, согласно вашему вопросу (мне никогда не нравился этот аргумент, лично, но я подумал, что это стоит упомянуть)
- создается впечатление, что ты сознательно решил сделать его частным, а не просто ушел с дефолтами.
что касается вашей последней части:
кроме того, есть ли случай, когда написание "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 говорит вам сделать это.