CS0188 de erro do compilador

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 existente em vez da própria propriedade.Auto-implementado propriedades devem ser evitadas em estruturas porque eles têm 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 do C#).

Exemplo

O exemplo a seguir gera CS0188:

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

            void MyMethod()
            {
            }

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

    }
}

Consulte também

Referência

Structs (guia de programação do C#)

Auto-implementado propriedades (guia de programação do C#)