CS0188 de erro do compilador

Mensagem de erro

O objeto 'this' não pode ser usado antes que todos os seus campos sejam atribuídos a

Todos os campos em um struct precisam ser atribuídos por um construtor antes que o construtor pode chamar um método na struct.

Se você vir esse erro ao tentar inicializar uma propriedade em um construtor de struct, a solução é alterar o parâmetro de construtor para especificar o campo de backup em vez da própria propriedade.Propriedades implementadas automaticamente devem ser evitadas structs porque eles tem nenhum campo existente e, portanto, não podem ser inicializados de qualquer forma do construtor.

Para obter mais informações, consulte Usando estruturas (Guia de programação C#).

Exemplo

O exemplo a seguir gera CS0188:

// CS0188.cs
// compile with: /t:library
namespace MyNamespace
{
    class MyClass
    {
        struct S
        {
            public int a;

            void Foo()
            {
            }

            S(int i)
            {
                // a = i;
                Foo();  // CS0188
            }
        }
        public static void Main()
        { }

    }
}

Consulte também

Referência

Structs (guia de programação C#)

Propriedades de Automático-implementado (Guia de programação C#)