Partager via


Erreur du compilateur CS0120

Une référence d’objet est requise pour la propriété, la méthode ou le champ non statique 'member'

Pour utiliser un champ, une méthode ou une propriété non statique, vous devez d’abord créer une instance d’objet. Pour plus d’informations sur les méthodes statiques, consultez Classes statiques et membres de classe statique. Pour plus d’informations sur la création d’instances de classes, consultez Constructeurs d’instances.

Exemple 1

L’exemple suivant génère l’erreur CS0120 :

// CS0120_1.cs
public class MyClass
{
    // Non-static field.
    public int i;
    // Non-static method.
    public void Method() { }
    // Non-static property.
    public int Prop
    {
        get
        {
            return 1;
        }
    }

    public static void Main()
    {
        i = 10;   // CS0120
        Method();   // CS0120
        int p = Prop;   // CS0120
    }
}

Pour corriger cette erreur, commencez par créer une instance de la classe :

// CS0120_1.cs
public class MyClass
{
    // Non-static field.
    public int i;
    // Non-static method.
    public void Method() { }
    // Non-static property.
    public int Prop
    {
        get
        {
            return 1;
        }
    }

    public static void Main()
    {
        var mc = new MyClass();
        mc.i = 10;
        mc.Method();
        int p = mc.Prop;
    }
}

Exemple 2

L’erreur CS0120 est également générée si un appel est passé à une méthode non statique à partir d’une méthode statique, comme suit :

// CS0120_2.cs
public class MyClass
{
    public void Method() { }

    public static void Main()
    {
        Method();   // CS0120
    }
}

Pour corriger cette erreur, commencez par créer une instance de la classe :

// CS0120_2.cs
public class MyClass
{
    public void Method() { }

    public static void Main()
    {
        var mc = new MyClass();
        mc.Method();
    }
}

Exemple 3

De même, une méthode statique ne peut pas appeler une méthode d’instance à moins que vous ne lui donniez explicitement une instance de la classe, comme suit :

// CS0120_3.cs
using System;

public class MyClass
{
    public static void Main()
    {
        DoIt("Hello There");   // CS0120
    }

    private void DoIt(string sText)
    {
        Console.WriteLine(sText);
    }
}

Pour corriger cette erreur, vous pouvez également ajouter le mot clé static à la définition de méthode :

// CS0120_3.cs
using System;

public class MyClass
{
    public static void Main()
    {
        DoIt("Hello There");
    }

    private static void DoIt(string sText)
    {
        Console.WriteLine(sText);
    }
}

Voir aussi