Error del compilador CS1626

Actualización: noviembre 2007

Mensaje de error

No se puede proporcionar un valor en el cuerpo de un bloque try con una cláusula catch
Cannot yield a value in the body of a try block with a catch clause

No se permite incluir una instrucción yield en un bloque try si hay una cláusula catch asociada a él. Para evitar este error, ponga la instrucción yield fuera de la cláusula catch.

El código siguiente genera el error CS1626:

// CS1626.cs
using System.Collections;

class C : IEnumerable
{
   public IEnumerator GetEnumerator()
   {
      try
      {
         yield return this;  // CS1626
      }
      catch
      {
        
      }
   }
}

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