Partilhar via


Restrições usando níveis de acessibilidade (translation from VPE for Csharp Reference)

Ao declarar um tipo, certifique-se de que você verá se esse tipo deve ser pelo menos acessíveis sistema autônomo outro tipo ou membro.Por exemplo, a classe base direta deve ser pelo menos tão acessível sistema autônomo a classe derivada.As seguintes declarações causará um erro de compilador porque a base da classe BaseClass é menos acessível que MyClass:

class BaseClass {...}
public class MyClass: BaseClass {...} // Error

A tabela a seguir resume as restrições sobre o uso de níveis de acessibilidade declarada.

Contexto

Comentários

Classes

A classe base direta de um tipo de classe deve estar em pelo menos tão acessível sistema autônomo o tipo de classe.

Interfaces

sistema autônomo interfaces base explícitas de um tipo de interface devem ser pelo menos tão acessíveis sistema autônomo o tipo de interface.

Delegados

O tipo de retorno e sistema autônomo tipos de parâmetro de um tipo delegado devem estar pelo menos tão acessíveis sistema autônomo o tipo de delegado.

Constantes

O tipo de uma constante deve ser pelo menos tão acessível sistema autônomo a constante si mesmo.

Campos

O tipo de um campo deve ser em lesistema autônomot sistema autônomo acessível sistema autônomo o próprio campo.

Métodos

O tipo de retorno e sistema autônomo tipos de parâmetro de um método devem ser pelo menos tão acessíveis quanto o próprio método.

Propriedades

O tipo de uma propriedade deve ser pelo menos tão acessível sistema autônomo a própria propriedade.

Eventos

O tipo de um evento deve ser pelo menos tão acessível que o evento propriamente dito.

Indexadores

sistema autônomo tipos de parâmetro e tipo de um indexador devem estar pelo menos tão acessíveis enquanto o indexador propriamente dito.

Operadores

O tipo de retorno e sistema autônomo tipos de parâmetro de um operador devem estar pelo menos tão acessíveis sistema autônomo o operador propriamente dito.

Construtores

sistema autônomo tipos de parâmetro de um construtor devem ser pelo menos tão acessíveis do construtor propriamente dito.

Exemplo

O exemplo a seguir contém errôneas declarações de tipos diferentes.O comentário que segue cada declaração indica o erro de compilador esperado.

// Restrictions on Using Accessibility Levels
// CS0052 expected as well as CS0053, CS0056, and CS0057
// To make the program work, change access level of both class B
// and MyPrivateMethod() to public.

using System;

// A delegate:
delegate int MyDelegate();

class B
{
    // A private method:
    static int MyPrivateMethod()
    {
        return 0;
    }
}

public class A
{
    // Error: The type B is less accessible than the field A.myField.
    public B myField = new B();

    // Error: The type B is less accessible
    // than the constant A.myConst.
    public readonly B myConst = new B();

    public B MyMethod()
    {
        // Error: The type B is less accessible 
        // than the method A.MyMethod.
        return new B();
    }

    // Error: The type B is less accessible than the property A.MyProp
    public B MyProp
    {
        set
        {
        }
    }

    MyDelegate d = new MyDelegate(B.MyPrivateMethod);
    // Even when B is declared public, you still get the error: 
    // "The parameter B.MyPrivateMethod is not accessible due to 
    // protection level."

    public static B operator +(A m1, B m2)
    {
        // Error: The type B is less accessible
        // than the operator A.operator +(A,B)
        return new B();
    }

    static void Main()
    {
        Console.Write("Compiled successfully");
    }
}

Especificação da linguagem C#

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

  • 3.5.1 Acessibilidade declarado

  • 3.5.4 Acessibilidade restrições

  • 10.3.5 Modificadores de acesso

  • 10.3.8.2 Acessibilidade declarada

  • 10.3.8.5 Acesso a membros particulares e protegidos, do tipo recipiente

Consulte também

Conceitos

Guia de Programação C#

Referência

Palavras-chave C#

Modificadores de acesso (referência C#)

Domínio de acessibilidade (translation from VPE for Csharp Reference)

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

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

public (referência C#) 

particular (referência C#)

(referência C#) protegida

(referência C#) interno

Outros recursos

Referência C#