Ler em inglês

Compartilhar via


Erro do Compilador CS1918

Membros da propriedade 'name' do tipo 'type' não podem ser atribuídos com um inicializador de objeto porque ele é de um tipo de valor.

Esse erro ocorre quando você tenta usar um inicializador de objeto para inicializar as propriedades de um tipo struct que é uma propriedade da classe que está sendo inicializada.

Para corrigir este erro

  1. Se você precisar inicializar totalmente os campos da propriedade no inicializador de objeto, altere o struct para um tipo de classe. Caso contrário, inicialize os membros do struct em uma chamada de método separada depois de criar o objeto usando o inicializador de objeto.

Exemplo

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

Confira também