Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 98185
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T00:08:52+00:00 2026-05-11T00:08:52+00:00

In my everlasting quest to suck less I’m trying to understand the yield statement,

  • 0

In my everlasting quest to suck less I’m trying to understand the ‘yield’ statement, but I keep encountering the same error.

The body of [someMethod] cannot be an iterator block because ‘System.Collections.Generic.List< AClass>’ is not an iterator interface type.

This is the code where I got stuck:

foreach (XElement header in headersXml.Root.Elements()){     yield return (ParseHeader(header));                 } 

What am I doing wrong? Can’t I use yield in an iterator? Then what’s the point? In this example it said that List<ProductMixHeader> is not an iterator interface type. ProductMixHeader is a custom class, but I imagine List is an iterator interface type, no?

–Edit–
Thanks for all the quick answers.
I know this question isn’t all that new and the same resources keep popping up.
It turned out I was thinking I could return List<AClass> as a return type, but since List<T> isn’t lazy, it cannot. Changing my return type to IEnumerable<T> solved the problem 😀

A somewhat related question (not worth opening a new thread): is it worth giving IEnumerable<T> as a return type if I’m sure that 99% of the cases I’m going to go .ToList() anyway? What will the performance implications be?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T00:08:53+00:00Added an answer on May 11, 2026 at 12:08 am

    A method using yield return must be declared as returning one of the following two interfaces:

    IEnumerable<SomethingAppropriate> IEnumerator<SomethingApropriate> 

    (thanks Jon and Marc for pointing out IEnumerator)

    Example:

    public IEnumerable<AClass> YourMethod() {     foreach (XElement header in headersXml.Root.Elements())     {         yield return (ParseHeader(header));                     } } 

    yield is a lazy producer of data, only producing another item after the first has been retrieved, whereas returning a list will return everything in one go.

    So there is a difference, and you need to declare the method correctly.

    For more information, read Jon’s answer here, which contains some very useful links.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 65k
  • Answers 65k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer There generally isn't a silver bullet in converting between table… May 11, 2026 at 11:11 am
  • added an answer You can use PHP's output buffering to accomplish this: ob_start();… May 11, 2026 at 11:11 am
  • added an answer Jeff Yates is right, this is a duplicate to Why… May 11, 2026 at 11:11 am

Related Questions

In my everlasting quest to suck less I'm trying to understand the yield statement,
In my engine I have a need to be able to detect DXT1 textures
In my last job we ended up rewriting the complete ASP.NET stack (forms, controls,
In my C/C++ program, I'm using OpenCV to capture images from my webcam. The
In my (PHP) web app, I have a part of my site that keeps
In my simple OpenGL program I get the following error about exit redefinition: 1>c:\program
In my application I have TextBox in a FormView bound to a LinqDataSource like
In my code fprintf returns successfully by returning the number of bytes written in
In my MFC application, when I call CComboBox::ShowDropDown(), the mouse cursor is hidden until
In my code behind I wire up my events like so: protected override void

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.