コンパイラ エラー CS0106
修飾子 'modifier' がこの項目に対して有効ではありません。
クラスまたはインターフェイスのメンバーが、無効なアクセス修飾子でマークされました。 無効な修飾子の例を次に示します。
静的修飾子はローカル関数では許可されていません。 この静的ローカル関数の機能は、C# 8.0 以降でサポートされています。 C# 8.0 をサポートしていないコンパイラでこの機能を使用しようとすると、CS0106 が生成されます。 ただし、C# 8.0 をサポートするコンパイラに C# 8.0 より前の言語バージョンが設定されている場合、C# 8.0 以降の使用を推奨する診断が生成されます。
public
キーワードは、明示的なインターフェイス宣言では使用できません。 この場合は、明示的なインターフェイス宣言からpublic
キーワードを削除してください。明示的なインターフェイスの実装はオーバーライドできないため、abstract キーワードは明示的なインターフェイス宣言で使用できません。
アクセス修飾子をローカル関数に使用することはできません。 ローカル関数は常にプライベートです。
ref readonly
戻り値の型を除き、クラス型のメソッドには 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
}
.NET