Errore del compilatore CS1626

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile produrre un valore nel corpo di un blocco try con una clausola catch.
Cannot yield a value in the body of a try block with a catch clause

Non è consentito utilizzare un'istruzione yield all'interno di un blocco try, se al blocco è associata una clausola catch. Per correggere l'errore, spostare l'istruzione yield all'esterno della clausola catch.

Il seguente codice di esempio genera l'errore 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() { }
}