(вдохновленный этим комментарием)
Есть ли ситуация, когда вам нужно использовать ключевое слово private
?
(Другими словами, ситуация, при которой исключение ключевого слова приведет к другому поведению)
(вдохновленный этим комментарием)
Есть ли ситуация, когда вам нужно использовать ключевое слово private
?
(Другими словами, ситуация, при которой исключение ключевого слова приведет к другому поведению)
public class Foo
{
public int Bar { get; private set; }
}
Опускание слова 'private' изменит доступность.
Ответ на вопрос Дэвида Яу дал самую обычную ситуацию. Вот еще один:ситуация, при которой исключение ключевого слова [
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
для вложенных) означает, что "этот класс должен иметь максимально ограниченный доступ, а другие" части "не могут изменить этот факт".
private
не касается поведения во время выполнения. Это сделает ваше приложение удобным. То, что скрыто private
, может влиять только на код вне его класса через члены public
или protected
.
Итак, ответ "нет" для поведения во время выполнения, "да" для поведения разработчика!