Подтвердить что ты не робот

Требуется ли С# ключевое слово private?

(вдохновленный этим комментарием)

Есть ли ситуация, когда вам нужно использовать ключевое слово private?
(Другими словами, ситуация, при которой исключение ключевого слова приведет к другому поведению)

4b9b3361

Ответ 1

public class Foo
{
    public int Bar { get; private set; }
}

Опускание слова 'private' изменит доступность.

Ответ 2

ситуация, при которой исключение ключевого слова [ private] приведет к поведению

Ответ на вопрос Дэвида Яу дал самую обычную ситуацию. Вот еще один:

В Account_generated.cs:

// Generated file. Do not edit!

public partial class Account
{
  ...

  private partial class Helper
  {
    ...
  }

  ...
}

В AccountHandCoded.cs:

public partial class Account
{
  ...

  public partial class Helper
  {
    ...
  }

  ...
}

Вышеприведенный код не будет компилироваться. Первая "часть" Account требует вложенного класса Helper как private. Поэтому попытка ручного кодера сделать публикацию Helper public не удалась!

Однако, если первая часть класса просто пропустила ключевое слово private, все бы скомпилировалось.

Итак, для partial классов (и структур, интерфейсов) декларация без доступа

partial class Name

означает, что "другим" частям "этого класса разрешено решать, что такое доступность".

В то время как прямое предоставление доступности по умолчанию (которое internal для не вложенных типов и private для вложенных) означает, что "этот класс должен иметь максимально ограниченный доступ, а другие" части "не могут изменить этот факт".

Ответ 3

private не касается поведения во время выполнения. Это сделает ваше приложение удобным. То, что скрыто private, может влиять только на код вне его класса через члены public или protected.

Итак, ответ "нет" для поведения во время выполнения, "да" для поведения разработчика!