Partager via


Erreur du compilateur CS1918

Mise à jour : novembre 2007

Message d'erreur

Les membres de la propriété 'nom' de type 'type' ne peuvent pas être assignés avec un initialiseur d'objet car il s'agit d'un type valeur.
Members of property 'name' of type 'type' cannot be assigned with an object initializer because it is of a value type.

Cette erreur se produit lorsque vous tentez d'utiliser un initialiseur d'objet pour initialiser les propriétés d'un type struct, lui-même propriété de la classe initialisée.

Pour corriger cette erreur

  • Si vous devez initialiser entièrement les champs de la propriété dans l'initialiseur d'objet, remplacez le type struct par un type classe. Sinon, initialisez les membres struct dans un appel de méthode après avoir créé l'objet à l'aide de l'initialiseur d'objet.

Exemple

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

// cs1918.cs
public struct MyStruct
{
    public int i;

}
public class Test
{
    private MyStruct str = new MyStruct();
    public MyStruct Str
    {
        get
        {
            return str;
        }
    }
    public static int Main()
    {
        Test t = new Test { Str = { i = 1 } }; // CS1918
        return 0;
    }
}

Voir aussi

Référence

Initialiseurs d'objets et de collection (Guide de programmation C#)