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()
{ }
}
}