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 |
---|---|
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. |
|
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. |
|
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. |
|
O tipo de uma constante deve ser pelo menos tão acessível sistema autônomo a constante si mesmo. |
|
O tipo de um campo deve ser em lesistema autônomot sistema autônomo acessível sistema autônomo o próprio campo. |
|
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. |
|
O tipo de uma propriedade deve ser pelo menos tão acessível sistema autônomo a própria propriedade. |
|
O tipo de um evento deve ser pelo menos tão acessível que o evento propriamente dito. |
|
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. |
|
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. |
|
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
Referência
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#)