Dela via


Kompilatorfel CS0106

Modifierarens modifierare är inte giltig för det här objektet

En klass- eller gränssnittsmedlem har markerats med en ogiltig åtkomstmodifierare. I följande exempel beskrivs några av dessa ogiltiga modifierare:

  • Den statiska modifieraren tillåts inte för en lokal funktion. Funktionen statisk lokal funktion stöds från och med C# 8.0. En kompilator som inte stöder C# 8.0 producerar CS0106 när du försöker använda den här funktionen. En kompilator som stöder C# 8.0 men den angivna språkversionen är före C# 8.0 genererar dock en diagnostik som tyder på att du använder C# 8.0 eller senare.

  • Nyckelordet public tillåts inte i en explicit gränssnittsdeklaration. I det här fallet tar du bort nyckelordet public från den explicita gränssnittsdeklarationen.

  • Det abstrakta nyckelordet tillåts inte i en explicit gränssnittsdeklaration eftersom en explicit gränssnittsimplementering aldrig kan åsidosättas.

  • Åtkomstmodifierare tillåts inte på en lokal funktion. Lokala funktioner är alltid privata.

  • Nyckelordet readonly tillåts inte på metoder i en klasstyp, med undantag för ref readonly returer (readonly nyckelordet måste visas efter nyckelordet ref ).

I tidigare versioner av Visual Studio static tilläts inte modifieraren för en klass, men static klasser tillåts från och med Visual Studio 2005.

Mer information finns i Gränssnitt.

Exempel

Följande exempel genererar 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
}