Erro do Compilador CS0106
O modificador 'modificador' não é válido para este item
Um membro de classe ou de interface foi marcado com um modificador de acesso inválido. Os exemplos a seguir descrevem alguns desses modificadores inválidos:
O modificador estático não é permitido em uma função local. O recurso de função local estático tem suporte do C# 8.0 em diante. Um compilador que não dá suporte ao C# 8.0 produz o erro CS0106 quando você tenta usar esse recurso. No entanto, um compilador que dá suporte ao C# 8.0, mas cuja versão de idioma definida é anterior ao C# 8.0, produzirá um diagnóstico sugerindo que você use o C# 8.0 ou versão posterior.
A palavra-chave
public
não é permitida em uma declaração de interface explícita. Nesse caso, remova a palavra-chavepublic
da declaração de interface explícita.A palavra-chave abstract não é permitida em uma declaração de interface explícita porque uma implementação de interface explícita nunca pode ser substituída.
Os modificadores de acesso não são permitidos em uma função local. As funções locais são sempre privadas.
A palavra-chave readonly não é permitida nos métodos em um tipo de classe, com exceção de retornos de
ref readonly
(a palavra-chavereadonly
deve aparecer após a palavra-chaveref
).
Em versões anteriores do Visual Studio, o modificador static
não era permitido em uma classe, mas as classes static
são permitidas a partir do Visual Studio 2005.
Para obter mais informações, consulte Interfaces.
Exemplo
O seguinte exemplo gera o erro CS0106:
// CS0106.cs
namespace MyNamespace
{
interface I
{
void M1();
void M2();
}
public class MyClass : I
{
public readonly int Prop1 { get; set; } // CS0106
public int Prop2 { get; readonly set; } // CS0106
public void I.M1() {} // CS0106
abstract void I.M2() {} // CS0106
public void AccessModifierOnLocalFunction()
{
public void LocalFunction() {} // CS0106
}
public readonly void ReadonlyMethod() {} // CS0106
// Move the `readonly` keyword after the `ref` keyword
public readonly ref int ReadonlyBeforeRef(ref int reference) // CS0106
{
return ref reference;
}
public static void Main() {}
}
public readonly class ReadonlyClass {} // CS0106
}