Насколько я знаю, private
по умолчанию везде в C # ( это означает , что , если я не пишу public
, protected
, internal
и т.д. , это будет private
по умолчанию). (Пожалуйста, поправьте меня, если я ошибаюсь.)
Итак, зачем писать это ключевое слово или почему оно вообще существует для участников?
Например, когда обработчик событий создается автоматически, он выглядит так:
private void RatTrap_MouseEnter(object sender, CheeseEventArgs e)
{
}
Но почему он вообще пишет приват, если это подразумевается и по умолчанию? Просто чтобы начинающие разработчики (которые не знают, что это значение по умолчанию в C #) знали, что это личное? Или есть разница в компиляторе?
Кроме того, есть случай , когда писать «частный» (один) будет изменять доступность элемента?
c#
private
specifications
access-modifiers
auto-generate
Камило Мартин
источник
источник
internal
однако, по умолчанию будет тип «верхнего уровня» .Ответы:
Это неправда. Типы, определенные в пространстве имен (классы, структуры, интерфейсы и т. Д.), По умолчанию будут внутренними . Кроме того, члены разных типов имеют разные возможности доступа по умолчанию (например, общедоступные для членов интерфейса). Подробнее см. Уровни доступности на MSDN.
Также,
Указание этого явно помогает обозначить ваше намерение сделать тип закрытым, очень явно. Это помогает поддерживать ваш код с течением времени. Это может помочь другим разработчикам (или вам) узнать, является ли участник закрытым по умолчанию или намеренно и т. Д.
источник
private
.get
и поset
умолчанию доступность самого свойстваНе совсем так - по умолчанию это «самый ограниченный доступ, доступный для этого объявления». Так, например, с типом верхнего уровня по умолчанию
internal
; для вложенного типа значение по умолчаниюprivate
.Он делает это явным, что хорошо по двум причинам:
Что касается вашей последней части:
Да, для того, чтобы сделать половину свойства более ограничительной, чем другую:
Раньше я использовал значения по умолчанию везде, где мог, но меня убедил (частично Эрик Липперт), что дать понять, что вы подумали об этом и решили сделать что-то частное, - хорошая идея.
Лично мне хотелось бы, чтобы был способ сделать это и для sealed / unsealed, и для объявлений типов - возможно, даже не иметь значения по умолчанию. Я подозреваю, что многие разработчики (включая меня, если я не буду осторожен) оставляют классы незапечатанными только потому, что это меньше усилий, чем их запечатывание.
источник
final
более типичный пример.private
добавляет визуальный беспорядок. Тем, кто настаивает на том, что он делает вещи ясными, я хотел бы спросить: вы тоже делаете то же самое с математикой? Например:Вы находите это непонятным без лишних скобок
b / c
?Правило в C # очень простое: по умолчанию все максимально приватно. Поэтому, если вам нужно, чтобы что-то было более заметным, чем стандартное, добавьте модификатор. В противном случае не добавляйте в код ненужные ключевые слова.
источник
Friend
, например, предназначена для участников. C # правильно использует настройки видимости по умолчанию: все настроено на минимальную видимость, если они не изменены. Из того, что я могу найти, похоже, что то же самое верно и для C ++ (кроме структур). (Это не похоже на F #.)var
, потому что это сокращает визуальный беспорядок, и все же так много людей поддерживают бессмысленный набор текстаprivate
.Явное объявление приватного означает, что вы знаете, что это приватное. Не просто так думать, потому что, насколько вы знаете, это значение по умолчанию. Это также означает, что кто-то другой, просматривающий код, знает, что это такое.
Нет никаких слов «Я думаю, что это так», «Я почти уверен, что это так» и т. Д. Это просто так . И все на одной странице.
Я не разработчик C # . Если бы мне пришлось работать с кодом, который не был явно объявлен частным , я бы, вероятно, предположил, что он внутренний .
Я не люблю, когда все устанавливается неявно. Никогда не бывает так ясно, как когда они явно установлены.
источник
Удобочитаемость. Не все знают, что конфиденциальность является поведением по умолчанию.
Намерение - дает четкое указание на то, что вы специально объявили собственность частной (по какой-либо причине).
источник
Читаемость и демонстрация намерений - вот две важные причины, по которым я могу думать.
источник
Одна из веских причин для явного указания видимости заключается в том, что вам не нужно думать о том, что является значением по умолчанию для контекста, в котором вы находитесь.
Еще одна веская причина в том, что FxCop говорит вам это делать.
источник
Многие люди (такие как я!) Регулярно программируют на нескольких разных языках. Явность в подобных вещах избавляет меня от необходимости запоминать все загадочные подробности всех языков, на которых я программирую.
источник
private
» - это загадочная деталь ... Но я понимаю суть. На днях мне было трудно вспомнить, как работал фреймворк, который я использовал на прошлой неделе ( MEF ).Я бы сказал для согласованности с читабельностью области остальной части класса.
источник