CS1918 de erro do compilador

Mensagem de erro

Membros da propriedade 'nome' do tipo 'type' não pode ser atribuído a um inicializador de objeto porque é de um valor digite.

Este erro ocorre ao tentar usar um inicializador de objeto para inicializar as propriedades de um tipo de struct próprio uma propriedade da classe que está sendo inicializada.

Para corrigir este erro

  • Se você deve inicializar totalmente os campos de propriedade no inicializador de objeto, altere o struct para um tipo de classe.Caso contrário, inicialize os membros de struct em uma telefonar de método separado depois de criar o objeto usando o inicializador de objeto.

Exemplo

O exemplo a seguir gera 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;
    }
}

Consulte também

Referência

Objeto e inicializadores de coleção (Guia de programação C#)