Error del compilador CS0188

Actualización: noviembre 2007

Mensaje de error

El objeto 'this' no se puede utilizar antes de que se hayan asignado todos sus campos
The 'this' object cannot be used before all of its fields are assigned to

El constructor deberá haber asignado todos los campos de una struct antes de que dicho constructor pueda llamar a un método de la struct.

Si este error aparece al intentar inicializar una propiedad en un constructor de estructuras, la solución es cambiar el parámetro del constructor para especificar el campo de respaldo en lugar de la propiedad en sí. Debe evitarse el uso de propiedades Auto-implemented en las estructuras, ya que no tienen campo de respaldo y, por lo tanto, no se pueden inicializar desde el constructor de ningún modo.

Para obtener más información, vea Utilizar estructuras (Guía de programación de C#).

Ejemplo

El código siguiente genera el error 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()
        { }

    }
}

Vea también

Referencia

Estructuras (Guía de programación de C#)

Propiedades autoimplementadas (Guía de programación de C#)