ситуация, в которой пропуск ключевого слова [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
общедоступной должна потерпеть неудачу!
Однако, если в первой части класса просто пропущено ключевое слово private
, все скомпилируется.
Таким образом, для partial
классов (и структур, интерфейсов) объявление без уровня доступа
partial class Name
означает, что «другим« частям »этого класса разрешается решать, какой должна быть доступность».
В то время как явное указание доступности по умолчанию (которая составляет internal
для не вложенных типов и private
для вложенных) означает, что «этот класс должен иметь максимально ограниченный доступ, а другие« части »не могутизменить этот факт ".