una situación en la que la omisión de la palabra clave [private
] daría lugar a un comportamiento diferente respuesta de
David guiñada dio la situación más habitual. Aquí es otra:
En Account_generated.cs
:
// Generated file. Do not edit!
public partial class Account
{
...
private partial class Helper
{
...
}
...
}
En AccountHandCoded.cs
:
public partial class Account
{
...
public partial class Helper
{
...
}
...
}
El código anterior no se compilará. La primera "parte" de Account
requiere la clase anidada Helper
para ser private
. ¡Por lo tanto, el intento del codificador manual de hacer público Helper
debe fallar!
Sin embargo, si la primera parte de la clase simplemente hubiera omitido la palabra clave private
, todo se compilaría.
Así que para partial
clases (y estructuras, interfaces), la declaración de acceso libre nivel
partial class Name
significa "se permite que las otras 'partes' de esta clase para decidir cuál debe ser la accesibilidad".
Considerando que dar explícitamente la accesibilidad predeterminada (que es internal
para tipos anidados y private
para anidados) significa que "esta clase debe tener el acceso más restringido posible, y las otras 'partes' no pueden cambiar ese hecho".
He eliminado mi respuesta, ya que resulta que no se puede tener un delegado privado en el ámbito del espacio de nombres. –
Exactamente. Un tipo 'privado' no anidado no tiene ningún sentido; sería lo mismo que 'interno'. – SLaks