Chyba kompilátoru CS0106

Modifikátor modifikátoru není pro tuto položku platný.

Třída nebo člen rozhraní byl označen neplatným modifikátorem přístupu. Následující příklady popisují některé z těchto neplatných modifikátorů:

  • Statický modifikátor není povolen pro místní funkci. Funkce statické místní funkce je podporovaná od C# 8.0. Kompilátor, který nepodporuje C# 8.0, vytvoří CS0106 při pokusu o použití této funkce. Kompilátor, který podporuje C# 8.0, ale nastavená jazyková verze je starší než C# 8.0, vytvoří diagnostiku s návrhem použití jazyka C# 8.0 nebo novější.

  • Klíčové public slovo není povoleno u explicitní deklarace rozhraní. V tomto případě odeberte public klíčové slovo z explicitní deklarace rozhraní.

  • Abstraktní klíčové slovo není povoleno u explicitní deklarace rozhraní, protože explicitní implementace rozhraní nelze nikdy přepsat.

  • Modifikátory přístupu nejsou povoleny pro místní funkci. Místní funkce jsou vždy soukromé.

  • Klíčové slovo readonly není povoleno u metod v typu třídy, s výjimkou návratů ref readonly (readonly klíčové slovo musí být zobrazeno za klíčovým slovem ref ).

V předchozích verzích sady Visual Studio static nebyl modifikátor ve třídě povolen, ale static třídy jsou povolené od sady Visual Studio 2005.

Další informace naleznete v tématu Rozhraní.

Příklad

Následující ukázka vygeneruje 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
}