Derleyici Hatası CS0106

'değiştirici' değiştiricisi bu öğe için geçerli değil

Sınıf veya arabirim üyesi geçersiz bir erişim değiştiricisi ile işaretlendi. Aşağıdaki örneklerde bu geçersiz değiştiricilerden bazıları açıklanmaktadır:

  • Statik değiştiriciye yerel bir işlevde izin verilmez. Statik yerel işlev özelliği C# 8.0 ile başlayarak desteklenir. C# 8.0'ı desteklemeyen bir derleyici, bu özelliği kullanmaya çalıştığınızda CS0106 üretir. Ancak, C# 8.0'ı destekleyen ancak ayarlanan dil sürümü C# 8.0'ın öncesi olan bir derleyici, C# 8.0 veya üzerini kullanmanızı öneren bir tanılama oluşturur.

  • Açık public arabirim bildiriminde anahtar sözcüğüne izin verilmez. Bu durumda, anahtar sözcüğünü public açık arabirim bildiriminden kaldırın.

  • Soyut bir arabirim uygulaması hiçbir zaman geçersiz kılınamayacağından, soyut anahtar sözcüğüne açık arabirim bildiriminde izin verilmez.

  • Yerel bir işlevde erişim değiştiricilerine izin verilmez. Yerel işlevler her zaman özeldir.

  • Readonly anahtar sözcüğüne, dönüşler dışında ref readonly bir sınıf türündeki yöntemler üzerinde izin verilmez (readonly anahtar sözcük anahtar sözcüğünden ref sonra görünmelidir).

Visual Studio'nun önceki sürümlerinde, bir sınıfta değiştiriciye static izin verilmedi, ancak static Visual Studio 2005'den itibaren sınıflara izin veriliyordu.

Daha fazla bilgi için bkz . Arabirimler.

Örnek

Aşağıdaki örnek CS0106 oluşturur:

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