Compiler Error CS1621

The yield statement cannot be used inside an anonymous method or lambda expression

The yield statement cannot be in an anonymous method block in an iterator.

Example

The following sample generates CS1621:

// CS1621.cs

using System.Collections;

delegate object MyDelegate();

class C : IEnumerable
{
    public IEnumerator GetEnumerator()
    {
        MyDelegate d = delegate
        {
            yield return this; // CS1621
            return this;
        };
        d();
        // Try this instead:
        // MyDelegate d = delegate { return this; };
        // yield return d();
    }

    public static void Main()
    {
    }
}

See Also

Reference

Iterators (C# Programming Guide)

yield

Lambda Expressions (C# Programming Guide)

Anonymous Methods (C# Programming Guide)

Change History

Date

History

Reason

October 2008

Added links to related topics.

Customer feedback.