Delen via


Compilerfout CS0106

De modifier 'modifier' is niet geldig voor dit item

Een klasse- of interfacelid is gemarkeerd met een ongeldige wijzigingsfunctie voor toegang. In de volgende voorbeelden worden enkele van deze ongeldige modifiers beschreven:

  • De statische wijziging is niet toegestaan voor een lokale functie. De functie statische lokale functie wordt ondersteund vanaf C# 8.0. Een compiler die C# 8.0 niet ondersteunt, produceert CS0106 wanneer u deze functie probeert te gebruiken. Een compiler die C# 8.0 ondersteunt, maar de taalversie van de set is vóór C# 8.0, levert een diagnose op die aangeeft dat u C# 8.0 of hoger gebruikt.

  • Het public trefwoord is niet toegestaan voor een expliciete interfacedeclaratie. Verwijder in dit geval het public trefwoord uit de expliciete interfacedeclaratie.

  • Het abstracte trefwoord is niet toegestaan voor een expliciete interfacedeclaratie omdat een expliciete interface-implementatie nooit kan worden overschreven.

  • Toegangsaanpassingen zijn niet toegestaan voor een lokale functie. Lokale functies zijn altijd privé.

  • Het alleen-lezen trefwoord is niet toegestaan voor methoden in een klassetype, met uitzondering van ref readonly retourneert (readonly trefwoord moet na het ref trefwoord worden weergegeven).

In eerdere versies van Visual Studio was de static modifier niet toegestaan voor een klasse, maar static klassen zijn toegestaan vanaf Visual Studio 2005.

Zie Interfaces voor meer informatie.

Opmerking

In het volgende voorbeeld wordt CS0106 gegenereerd:

// 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
}