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ě odebertepublic
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 slovemref
).
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
}