Lire en anglais

Partager via


Erreur du compilateur CS1918

Les membres de la propriété 'name' de type 'type' ne peuvent pas être assignés avec un initialiseur d’objet car il s’agit d’un type valeur.

Cette erreur se produit quand vous essayez d’utiliser un initialiseur d’objet pour initialiser les propriétés d’un type struct qui est lui-même une propriété de la classe en cours d’initialisation.

Pour corriger cette erreur

  1. Si vous devez initialiser complètement les champs de la propriété dans l’initialiseur d’objet, remplacez le struct par un type de classe. Sinon, initialisez les membres du struct dans un appel de méthode distinct après avoir créé l’objet à l’aide de l’initialiseur d’objet.

Exemple

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

C#
// 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