Compilerfehler CS0106
Der „modifier“-Modifizierer ist für dieses Element nicht gültig.
Ein Klassen- oder Schnittstellenmember wurde mit ungültigen Zugriffsmodifizierern gekennzeichnet. In den folgenden Beispielen werden einige dieser ungültigen Modifizierer beschrieben:
Der static-Modifizierer ist in einer lokalen Funktion nicht zulässig. Das Feature für statische lokale Funktionen wird ab C# 8.0 unterstützt. Ein Compiler, der C# 8.0 nicht unterstützt, erzeugt CS0106, wenn Sie versuchen, dieses Feature zu verwenden. Wenn ein Compiler C# 8.0 unterstützt, allerdings eine festgelegte Sprachversion vor C# 8.0 genutzt wird, erzeugt er eine Diagnose, die darauf hinweist, dass Sie C# 8.0 oder höher verwenden sollten.
Das
public
-Schlüsselwort ist bei einer expliziten Schnittstellendeklaration nicht zulässig. Entfernen Sie in diesem Fall daspublic
-Schlüsselwort aus der expliziten Schnittstellendeklaration.Das abstract-Schlüsselwort ist in einer expliziten Schnittstellendeklaration nicht zulässig, da eine explizite Schnittstellenimplementierung nie überschrieben werden kann.
Zugriffsmodifizierer sind bei einer lokalen Funktion nicht zulässig. Lokale Funkionen sind immer privat.
Das schreibgeschützte Schlüsselwort ist für Methoden in einem Klassentyp nicht zulässig, mit Ausnahme von
ref readonly
-Rückgaben (Schlüsselwortreadonly
muss nach dem Schlüsselwortref
angezeigt werden).
In früheren Visual Studio-Versionen war der static
-Modifizierer in einer Klasse nicht erlaubt. Ab Visual Studio 2005 sind die static
-Klassen jedoch zulässig.
Weitere Informationen finden Sie unter Schnittstellen.
Beispiel
Im folgenden Beispiel wird CS0106 generiert:
// 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
}