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 das public-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üsselwort readonly muss nach dem Schlüsselwort ref 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
}