Partager via


Erreur du compilateur CS0188

Mise à jour : novembre 2007

Message d'erreur

L'objet 'this' ne peut pas être utilisé avant que tous ses champs soient assignés
The 'this' object cannot be used before all of its fields are assigned to

Tous les champs d'un struct doivent être assignés par un constructeur avant que le constructeur puisse appeler une méthode dans le struct.

Si cette erreur se produit lorsque vous tentez d'initialiser une propriété dans un constructeur de struct, la solution est de modifier le paramètre de constructeur pour spécifier le champ de stockage au lieu de la propriété elle-même. Les propriétés implémentées automatiquement doivent être évitées dans les structs parce qu'elles n'ont pas de champ de stockage et par conséquent ne peuvent pas être initialisées à partir du constructeur.

Pour plus d'informations, consultez Utilisation de structures (Guide de programmation C#).

Exemple

L'exemple suivant génère l'erreur CS0188 :

// CS0188.cs
// compile with: /t:library
namespace MyNamespace
{
    class MyClass
    {
        struct S
        {
            public int a;

            void Foo()
            {
            }

            S(int i)
            {
                // a = i;
                Foo();  // CS0188
            }
        }
        public static void Main()
        { }

    }
}

Voir aussi

Référence

Structures (Guide de programmation C#)

Propriétés implémentées automatiquement (Guide de programmation C#)