Errore del compilatore CS1918

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile assegnare i membri della proprietà 'nome' di tipo 'tipo' con un inizializzatore di oggetti perché è di un tipo valore.
Members of property 'name' of type 'type' cannot be assigned with an object initializer because it is of a value type.

Questo errore si verifica quando si tenta di utilizzare un inizializzatore di oggetti per inizializzare le proprietà di un tipo struttura che è una proprietà della classe in fase di inizializzazione.

Per correggere l'errore

  • Se è necessario inizializzare completamente i campi della proprietà nell'inizializzatore di oggetti, impostare la struttura su un tipo di classe. In caso contrario, inizializzare i membri della struttura in una chiamata al metodo separata dopo avere creato l'oggetto mediante l'inizializzatore di oggetti.

Esempio

Nell'esempio seguente viene generato l'errore 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;
    }
}

Vedere anche

Riferimenti

Inizializzatori di oggetto e di insieme (Guida per programmatori C#)