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