Partilhar via


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

Use os modificadores de acesso, public, protected, internal, ou private, para especificar um dos seguintes níveis de acessibilidade declarados para membros.

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

Apenas um modificador de acesso é permitido para um membro ou tipo, exceto quando você usa as protected internal combinações ou private protected .

Modificadores de acesso não são permitidos em namespaces. Os namespaces não têm restrições de acesso.

Dependendo do contexto em que uma declaração de membro ocorre, apenas certas acessibilidades declaradas são permitidas. Se nenhum modificador de acesso for especificado 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, só podem ter internal ou public acessibilidade. A acessibilidade padrão para esses tipos é internal.

Os tipos aninhados, que são membros de outros tipos, podem ter acessibilidades declaradas conforme indicado na tabela a seguir.

Membros da Acessibilidade padrão para membros Permitida acessibilidade declarada do membro
enum public Nenhuma
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.

Nota

Se uma classe ou struct for modificada com o modificador de record palavra-chave, os mesmos modificadores de acesso serão permitidos.
Além disso, com o record modificador, a acessibilidade do membro padrão ainda private é tanto para a classe quanto para o struct.

A acessibilidade de um tipo aninhado depende de seu domínio de acessibilidade, que é determinado pela acessibilidade declarada do membro e pelo domínio de acessibilidade do tipo imediatamente contido. 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 da linguagem é a fonte definitiva para a sintaxe e o uso do C#.

Consulte também