Erreur du compilateur CS0106
Le modificateur 'modifier' n’est pas valide pour cet élément
Un membre de classe ou d’interface a été marqué avec un modificateur d’accès non valide. Les exemples suivants illustrent certains de ces modificateurs non valides :
Le modificateur static n’est pas autorisé sur une fonction locale. La fonctionnalité de fonction locale statique est prise en charge à partir de C# 8.0. Un compilateur qui ne prend pas en charge C# 8.0 produit CS0106 lorsque vous essayez d’utiliser cette fonctionnalité. Toutefois, un compilateur qui prend en charge C# 8.0 mais dont la version de langage définie est antérieure à C# 8.0 génère un diagnostic suggérant d’utiliser C# 8.0 ou version ultérieure.
Le mot clé
public
n’est pas autorisé dans une déclaration d’interface explicite. Dans ce cas, supprimez le mot clépublic
de la déclaration d’interface explicite.Le mot clé abstract n’est pas autorisé dans une déclaration d’interface explicite, car une implémentation d’interface explicite ne peut jamais être substituée.
Les modificateurs d’accès ne sont pas autorisés sur une fonction locale. Les fonctions locales sont toujours privées.
Le mot clé readonly n’est pas autorisé dans les méthodes d’un type de classe, à l’exception des retours
ref readonly
(le mot cléreadonly
doit apparaître après le mot cléref
).
Dans les versions antérieures de Visual Studio, le modificateur static
n’était pas autorisé sur une classe, mais les classes static
sont autorisées à compter de Visual Studio 2005.
Pour plus d'informations, consultez Interfaces.
Exemple
L’exemple suivant génère l’erreur 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
}