Kompilatorfel CS0106
Modifierarens modifierare är inte giltig för det här objektet
En klass- eller gränssnittsmedlem har markerats med en ogiltig åtkomstmodifierare. I följande exempel beskrivs några av dessa ogiltiga modifierare:
Den statiska modifieraren tillåts inte för en lokal funktion. Funktionen statisk lokal funktion stöds från och med C# 8.0. En kompilator som inte stöder C# 8.0 producerar CS0106 när du försöker använda den här funktionen. En kompilator som stöder C# 8.0 men den angivna språkversionen är före C# 8.0 genererar dock en diagnostik som tyder på att du använder C# 8.0 eller senare.
Nyckelordet
public
tillåts inte i en explicit gränssnittsdeklaration. I det här fallet tar du bort nyckelordetpublic
från den explicita gränssnittsdeklarationen.Det abstrakta nyckelordet tillåts inte i en explicit gränssnittsdeklaration eftersom en explicit gränssnittsimplementering aldrig kan åsidosättas.
Åtkomstmodifierare tillåts inte på en lokal funktion. Lokala funktioner är alltid privata.
Nyckelordet readonly tillåts inte på metoder i en klasstyp, med undantag för
ref readonly
returer (readonly
nyckelordet måste visas efter nyckelordetref
).
I tidigare versioner av Visual Studio static
tilläts inte modifieraren för en klass, men static
klasser tillåts från och med Visual Studio 2005.
Mer information finns i Gränssnitt.
Exempel
Följande exempel genererar 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
}