Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao especificar um tipo em uma declaração, verifique se o nível de acessibilidade do tipo depende do nível de acessibilidade de um membro ou de outro tipo. Por exemplo, a classe base direta deve ser pelo menos tão acessível quanto a classe derivada. As declarações a seguir causam um erro de compilador porque a classe BaseClass base é menos acessível que MyClass:
class BaseClass {...}
public class MyClass: BaseClass {...} // Error
A linguagem C# faz referência a documentos da versão mais recentemente lançada da linguagem C#. Ele também contém a documentação inicial para funcionalidades em pré-visualizações públicas para o próximo lançamento do idioma.
A documentação identifica qualquer recurso introduzido pela primeira vez nas três últimas versões do idioma ou nas versões prévias públicas atuais.
Dica
Para descobrir quando um recurso foi introduzido pela primeira vez em C#, consulte o artigo sobre o histórico de versão da linguagem C#.
A lista a seguir resume as restrições nos níveis de acessibilidade declarados.
- Classes: A classe base direta de um tipo de classe deve ser pelo menos tão acessível quanto o próprio tipo de classe.
- Interfaces: as interfaces base explícitas de um tipo de interface devem ser pelo menos tão acessíveis quanto o próprio tipo de interface.
- Delegados: o tipo de retorno e os tipos de parâmetro de um tipo delegado devem ser pelo menos tão acessíveis quanto o próprio tipo delegado.
- Constantes: o tipo de constante deve ser pelo menos tão acessível quanto a constante em si.
- Campos: o tipo de um campo deve ser pelo menos tão acessível quanto o próprio campo.
- Métodos: o tipo de retorno e os 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 quanto a própria propriedade.
- Eventos: o tipo de um evento deve ser pelo menos tão acessível quanto o próprio evento.
- Indexadores: os tipos de tipo e parâmetro de um indexador devem ser pelo menos tão acessíveis quanto o próprio indexador.
- Operadores: o tipo de retorno e os tipos de parâmetro de um operador devem ser pelo menos tão acessíveis quanto o próprio operador.
- Construtores: os tipos de parâmetro de um construtor devem ser pelo menos tão acessíveis quanto o próprio construtor.
O exemplo a seguir contém declarações errôneas de diferentes tipos. O comentário após cada declaração indica o erro esperado do compilador.
// 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 a Especificação da Linguagem C# . A especificação de idioma é a fonte definitiva para a sintaxe e o uso de C#.