Níveis de acessibilidade (Referência de C#)
Use os modificadores de acesso, public
, protected
, internal
ou private
, para especificar um dos níveis de acessibilidade declarada a seguir para membros.
Acessibilidade declarada | Significado |
---|---|
public |
O acesso não é restrito. |
protected |
O acesso é limitado à classe que os contém ou aos tipos derivados da classe que os contém. |
internal |
O acesso é limitado ao assembly atual. |
protected internal |
O acesso é limitado ao assembly atual ou aos tipos derivados da classe que os contém. |
private |
O acesso é limitado ao tipo recipiente. |
private protected |
O acesso é limitado à classe que o contém ou a tipos derivados da classe que o contém no assembly atual. |
Apenas um modificador de acesso é permitido para um membro ou tipo, exceto quando você usa as combinações protected internal
e private protected
.
Os modificadores de acesso não são permitidos em namespaces. Namespaces não têm nenhuma restrição de acesso.
Dependendo do contexto no qual ocorre uma declaração de membro, apenas algumas acessibilidades declaradas são permitidas. Se não for especificado nenhum modificador de acesso em uma declaração de membro, uma acessibilidade padrão será usada.
Os tipos de nível superior, que não estão aninhados em outros tipos, podem ter apenas a acessibilidade internal
ou public
. A acessibilidade de padrão para esses tipos é internal
.
Tipos aninhados, que são membros de outros tipos, podem ter acessibilidades declaradas conforme indicado na tabela a seguir.
Membros de | Acessibilidade de membro padrão | Acessibilidade declarada permitida do membro |
---|---|---|
enum |
public |
Nenhum |
class |
private |
public protected internal private protected internal private protected |
interface |
public |
public protected internal private *protected internal private protected |
struct |
private |
public internal private |
* Um membro interface
com acessibilidade private
deve ter uma implementação padrão.
Observação
Se uma classe ou struct for modificada com o modificador de palavra-chave record
, os mesmos modificadores de acesso serão permitidos.
Além disso, com o modificador record
, a acessibilidade padrão do membro ainda é private
, tanto para a classe quanto para a estrutura.
A acessibilidade de um tipo aninhado depende do domínio de acessibilidade, que é determinado pela acessibilidade declarada do membro e pelo domínio da acessibilidade do tipo imediatamente contido. Entretanto, o domínio de acessibilidade de um tipo aninhado não pode exceder o do tipo contido.
Especificação da Linguagem C#
Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.