Share via


編譯器錯誤 CS0106

修飾詞 'modifier' 對此項目無效

類別或介面的成員標記了無效的存取修飾詞。 下列範例說明部分無效的修飾詞︰

  • 區域函式上不允許 static 修飾詞。 靜態本機函式功能自 C# 8.0 起開始支援。 當您嘗試使用此功能時,不支援 C# 8.0 的編譯器會產生 CS0106。 但支援 C# 8.0,但語言版本設定為 C# 8.0 之前的編譯器,會產生建議您使用 C# 8.0 或更新版本的診斷。

  • 明確介面宣告上不允許 public 關鍵字。 在此情況下,請從明確介面宣告移除 public 關鍵字。

  • 在明確介面宣告上不允許 abstract 關鍵字,因為永遠不會覆寫明確介面實作。

  • 區域函式上不允許存取修飾詞。 區域函式一律為私用。

  • 類別類型中的方法不允許唯讀關鍵字,但 ref readonly 傳回除外 (readonly 關鍵字必須出現在 ref 關鍵字之後)。

在舊版 Visual Studio 中,在類別上不允許 static 修飾詞,但從 Visual Studio 2005 開始允許 static 類別。

如需詳細資訊,請參閱介面

範例

下列範例會產生 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
}