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#)