Ler em inglês

Partilhar via


Erro do compilador CS1918

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

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

Para corrigir este erro

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

Exemplo

O exemplo a seguir gera CS1918:

C#
// 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