編譯器錯誤 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
}