Error del compilador CS1918

Actualización: noviembre 2007

Mensaje de error

Los miembros de la propiedad 'nombre' de tipo 'tipo' no se pueden asignar con un inicializador de objeto porque es de un tipo de valor.
Members of property 'name' of type 'type' cannot be assigned with an object initializer because it is of a value type.

Este error se produce al intentar utilizar un inicializador de objeto para inicializar las propiedades de un tipo de estructura que es a su vez una propiedad de la clase que se va a inicializar.

Para corregir este error

  • Si debe inicializar totalmente los campos de la propiedad en el inicializador de objeto, cambie la estructura a un tipo de clase. De lo contrario, inicialice los miembros de estructura en una llamada a método independiente después de crear el objeto utilizando el inicializador de objeto.

Ejemplo

El ejemplo siguiente genera el error 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;
    }
}

Vea también

Referencia

Inicializadores de objeto y de colección (Guía de programación de C#)