Ошибка компилятора CS0106
Модификатор "модификатор" недопустим для этого элемента
Член класса или интерфейса помечен недопустимым модификатором доступа. В следующих примерах описываются некоторые недопустимые модификаторы.
Модификатор 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
}