Błąd kompilatora CS0106
Modyfikator "modyfikator" jest nieprawidłowy dla tego elementu
Element członkowski klasy lub interfejsu został oznaczony nieprawidłowym modyfikatorem dostępu. W poniższych przykładach opisano niektóre z tych nieprawidłowych modyfikatorów:
Modyfikator statyczny nie jest dozwolony w funkcji lokalnej. Funkcja statycznej funkcji lokalnej jest obsługiwana od języka C# 8.0. Kompilator, który nie obsługuje języka C# 8.0, tworzy CS0106 podczas próby użycia tej funkcji. Jednak kompilator obsługujący język C# 8.0, ale ustawiona wersja języka jest wcześniejsza niż C# 8.0, utworzy diagnostykę sugerującą, że używasz języka C# 8.0 lub nowszego.
Słowo
public
kluczowe nie jest dozwolone w jawnej deklaracji interfejsu. W takim przypadku usuńpublic
słowo kluczowe z jawnej deklaracji interfejsu.Słowo kluczowe abstrakcyjne nie jest dozwolone w jawnej deklaracji interfejsu, ponieważ jawna implementacja interfejsu nigdy nie może być zastępowana.
Modyfikatory dostępu nie są dozwolone w funkcji lokalnej. Funkcje lokalne są zawsze prywatne.
Słowo kluczowe readonly nie jest dozwolone w metodach w typie klasy, a wyjątek
ref readonly
zwraca (readonly
słowo kluczowe musi pojawiać się po słowieref
kluczowym).
W poprzednich wersjach programu Visual Studio static
modyfikator nie był dozwolony w klasie, ale static
klasy są dozwolone począwszy od programu Visual Studio 2005.
Aby uzyskać więcej informacji, zobacz Interfejsy.
Przykład
Poniższy przykład generuje 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
}