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