Compartilhar via


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

Use os modificadores de acesso, internalprotectedou private especifique publicum dos seguintes níveis de acessibilidade declarados para membros.

Acessibilidade declarada Significado
public O acesso não é restrito.
protected O acesso é limitado à classe ou tipos que contêm derivados da classe que contém.
internal O acesso é limitado ao assembly atual.
protected internal O acesso é limitado ao assembly atual ou tipos derivados da classe que contém.
private O acesso é limitado ao tipo que contém.
private protected O acesso é limitado à classe ou tipos que contêm derivados da classe que contém dentro do assembly atual.

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 ouprivate protected.protected internal

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