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

Confira também