Compartilhar via


Níveis de acessibilidade (referência de C#)

Use os modificadores de acesso, publicprotectedou internal especifique privateum dos seguintes níveis de acessibilidade declarados para membros.

  • 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.

A linguagem C# faz referência a documentos da versão mais recentemente lançada da linguagem C#. Ele também contém a documentação inicial para funcionalidades em pré-visualizações públicas para o próximo lançamento do idioma.

A documentação identifica qualquer recurso introduzido pela primeira vez nas três últimas versões do idioma ou nas versões prévias públicas atuais.

Dica

Para descobrir quando um recurso foi introduzido pela primeira vez em C#, consulte o artigo sobre o histórico de versão da linguagem C#.

Tipos de nível superior (não aninhados) podem usar o modificador de arquivo . O file modificador restringe o acesso ao código no mesmo arquivo de origem. Você não pode combinar o file modificador com qualquer modificador de acesso.

Use apenas um modificador de acesso para um membro ou tipo, exceto quando você usa as combinações ouprotected internal.private protected

Não use modificadores de acesso em namespaces. Namespaces não têm nenhuma restrição de acesso.

Dependendo do contexto em que uma declaração de membro ocorre, somente determinadas acessibilidades declaradas são permitidas. Se você não especificar um modificador de acesso em uma declaração de membro, uma acessibilidade padrão será usada.

Tipos de nível superior, que não são aninhados em outros tipos, só podem ter internal ou public acessibilidade. A acessibilidade padrão para esses tipos é internal.

Tipos aninhados, que são membros de outros tipos, podem ter acesso declarado conforme indicado na tabela a seguir.

Membros do 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 interface membro com private acessibilidade deve ter uma implementação padrão.

Observação

Se você modificar uma classe ou struct com o record modificador de palavra-chave, use os mesmos modificadores de acesso. Além disso, com o record modificador, a acessibilidade de membro padrão ainda private é para classe e struct.

A acessibilidade de um tipo aninhado depende de seu domínio de acessibilidade, que a acessibilidade declarada do membro e o domínio de acessibilidade do tipo que contém imediatamente determinam. No entanto, o domínio de acessibilidade de um tipo aninhado não pode exceder o do tipo que contém.

Especificação da linguagem C#

Para obter mais informações, consulte a Especificação da Linguagem C# . A especificação de idioma é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também