Compilerfehler CS1918

Aktualisiert: November 2007

Fehlermeldung

Member der "Name"-Eigenschaft vom Typ "Typ" können nicht mit einem Objektinitialisierer zugewiesen werden, da es sich um einen Werttyp handelt.
Members of property 'name' of type 'type' cannot be assigned with an object initializer because it is of a value type.

Dieser Fehler tritt auf, wenn Sie versuchen, mit einem Objektinitialisierer die Eigenschaften eines Strukturtyps zu initialisieren, der selbst eine Eigenschaft der initialisierten Klasse ist.

So beheben Sie diesen Fehler

  • Wenn Sie die Felder der Eigenschaft im Objektinitialisierer vollständig initialisieren müssen, wandeln Sie den Strukturtyp in einen Klassentyp um. Andernfalls initialisieren Sie die Strukturmember in einem separaten Methodenaufruf, nachdem Sie das Objekt mit dem Objektinitialisierer erstellt haben.

Beispiel

Durch das folgende Beispiel wird der Fehler CS1918 ausgelöst:

// 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;
    }
}

Siehe auch

Referenz

Objekt- und Auflistungsinitialisierer (C#-Programmierhandbuch)