Error del compilador CS0106
El modificador 'modifier' no es válido para este elemento
Se ha marcado un miembro de clase o interfaz con un modificador de acceso no válido. En los ejemplos siguientes se describen algunos de estos modificadores no válidos:
El modificador static no se permite en una función local. La característica de función local estática se admite a partir de C# 8.0. Un compilador que no admite C# 8.0 produce el error CS0106 al intentar usar esta característica. Pero, aunque un compilador admita C# 8.0, si la versión del lenguaje establecido es anterior, producirá un diagnóstico que le sugerirá que use C# 8.0 o una versión posterior.
La palabra clave
public
no está permitida en una declaración explícita de la interfaz. En este caso, quite la palabra clavepublic
de la declaración explícita de la interfaz.La palabra clave abstract no está permitida en una declaración explícita de la interfaz porque nunca se puede invalidar una implementación de interfaz explícita.
No se permiten modificadores de acceso en una función local. Las funciones locales siempre son privadas.
No se permite la palabra clave readonly en los métodos de un tipo de clase, con la excepción de devoluciones de
ref readonly
(la palabra clavereadonly
debe aparecer después de la palabra claveref
).
En versiones anteriores de Visual Studio, el modificador static
no estaba permitido en una clase, pero las clases static
se permiten a partir de Visual Studio 2005.
Para más información, vea Interfaces.
Ejemplo
El ejemplo siguiente genera el error 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
}