Modificadores de acesso (guia de programação C#)

Todos os tipos e membros de tipos têm um nível de acessibilidade, que controla se que possam ser usados no outro código no seu conjunto ou outros assemblies.Você pode especificar a acessibilidade de um tipo ou membro quando você declara usando um dos seguintes modificadores de acesso:

  • Público
    O tipo ou membro pode ser acessado por qualquer Outros código no mesmo conjunto de módulos (assembly) ou Outros conjunto que faz referência a ele.

  • Particular
    O tipo ou membro só pode ser acessado pelo código na mesma classe ou struct.

  • Protegido
    O tipo ou membro só pode ser acessado pelo código na mesma classe ou struct ou em uma classe derivada.

  • interno
    O tipo ou membro pode ser acessado por qualquer código no mesmo assembly, mas não de outro assembly.

  • protected internal
    O tipo ou membro pode ser acessado por qualquer código no mesmo conjunto de módulos (assembly) ou por qualquer classe derivada em outro assembly.

Os exemplos a seguir demonstram como especificar modificadores de acesso em um tipo e membro:

public class Bicycle
{
    public void Pedal() { }
}

Nem todos os modificadores de acesso podem ser usados por todos os tipos ou membros em todos os contextos e em alguns casos, a acessibilidade de um membro de tipo é restringida pela acessibilidade de seu tipo recipiente.As seções a seguir fornecem mais detalhes sobre acessibilidade.

Classe e acessibilidade de Struct

Classes e estruturas que são declaradas dentro de um namespace (em Outros palavras, não, eles são aninhados em Outros classes ou estruturas) podem ser públicas ou internas.Interno é o padrão se nenhum modificador de acesso for especificado.Classes aninhadas e estruturas também podem ser declaradas sistema autônomo particular.particular tipos aninhados não são acessíveis a partir do tipo recipiente.

Classes derivadas não podem ter maior acessibilidade de seus tipos base.Em Outros palavras, não é possível ter uma classe pública B que deriva de uma classe interna A. Se foram permitida, ele teria o efeito de tornar A pública, pois todos os membros protegidos ou internos do A são acessíveis a partir da classe derivada.

Você pode habilitar específico outros assemblies para acesso seus tipos internos, usando o InternalsVisibleToAttribute.Para obter mais informações, consulte Friend Assemblies (guia de programação translation from VPE for Csharp).

Classe e membro da estrutura acessibilidade

Membros da classe (incluindo classes aninhadas e estruturas) podem ser declarados com qualquer um dos cinco tipos de acesso.sistema autônomo membros de struct não podem ser declarados sistema autônomo protegido porque structs não oferecem suporte à herança.

A acessibilidade de um membro nunca pode ser maior do que a acessibilidade de seu tipo recipiente.Por exemplo, um método público declarado em um tipo interno tem apenas interna acessibilidade.

Quando um membro de uma classe ou struct é uma propriedade, campo, método, evento, ou delegado e esse membro é um tipo ou tem um tipo sistema autônomo um parâmetro ou valor retornado, a acessibilidade do membro não pode ser maior do que o tipo.Por exemplo, você não pode ter um método público M que retorna uma classe C a menos que C também é público. Da mesma forma, você não pode ter uma propriedade protegida do tipo A Se A é declarado sistema autônomo privado.

Operadores definidos pelo usuário sempre devem ser declarados sistema autônomo públicos.Para obter mais informações, consulte operador (translation from VPE for Csharp Reference).

Destruidores não podem ter modificadores de acessibilidade.

Para conjunto o nível de acesso de membro classe ou struct, adicione a palavra-chave apropriada para a declaração de membro.Aqui estão alguns exemplos:

// public class:
public class Tricycle
{
    // protected method:
    protected void Pedal() { }

    // private field:
    private int wheels = 3;

    // protected internal property:
    protected internal int Wheels
    {
        get { return wheels; }
    }
}
Observação:

O protectedinternal acessibilidade significa não protegido ou interno, protegidos e interna. In other words, a protectedinternal member is accessible from any class in the same assembly, including derived classes.Para limitar acesso a somente sistema autônomo classes derivadas no mesmo assembly, declarar a própria classe interna e declarar seus membros protegidos.

Outros tipos de

Interfaces declarados diretamente com um espaço para nome podem ser declarados sistema autônomo público ou interno e, sistema autônomo classes e estruturas, interfaces padrão para acesso interno.Membros de interface sempre são públicos, como a finalidade de uma interface é permitir que outros tipos acessar uma classe ou struct.Sem modificadores de acesso podem ser aplicados aos membros de interface.

Enumeração membros sempre são públicos e sem modificadores de acesso podem ser aplicadas.

Por padrão, delegados têm acesso interno.

Especificação da linguagem C#

Para obter mais informações, consulte as seções a seguir no Especificação da linguagem C#:

  • 3,5 Acesso de membro de

  • 10.3.5 Modificadores de acesso

Consulte também

Conceitos

Guia de Programação C#

Referência

Classes e estruturas (guia de programação translation from VPE for Csharp)

Interfaces (guia de programação C#)

particular (referência C#)

public (referência C#) 

(referência C#) interno

(referência C#) protegida

classe (translation from VPE for Csharp Reference)

struct (translation from VPE for Csharp Reference)

interface (translation from VPE for Csharp Reference)