Error del compilador CS0542

Actualización: noviembre 2007

Mensaje de error

'tipo definido por el usuario': los nombres de los miembros no pueden coincidir con sus tipos envolventes
'user-defined type' : member names cannot be the same as their enclosing type

Se utilizó un nombre más de una vez en la misma construcción. Este error puede producirse al colocar sin darse cuenta un tipo de valor devuelto en un constructor.

El código siguiente genera el error CS0542:

// CS0542.cs
class F
{
   // Remove void from F() to resolve the problem.
   void F()   // CS0542, same name as the class
   {
   }
}

class MyClass
{
   public static void Main()
   {
   }
}

Si la clase se denomina 'Item' y tiene un indizador declarado como this, puede producirse este error, ya que se dará el nombre 'Item' a un indizador predeterminado en el código emitido, lo que provoca el conflicto.

// CS0542b.cs
class Item
{
   public int this[int i]  // CS0542
   {
      get
      {
         return 0;
      }
   }
}

class CMain
{
   public static void Main()
   {
   }
}