Question: I have a method that returns an IEnumerable like this..

```
public virtual IEnumerable<Page> ToPages(){
  // foreach logic
  yield return pages;

  // more foreach logic
  yield return otherPages;

  // etc
}

```

The method seems to work ... in a way. But what's really baffling is that I cannot step into it! I place debugger points all around, and the debugger just passes right through them!!! 

Does anyone know why this might occur?

Answer: 
The method isn't run until you enumerate into it.

```
foo.ToPages().ToList() // will enumerate and your breakpoint will be hit.

```
Your enumerable method will only execute once you actually try to access the members.

This is called "**Deferred Execution**" (see <http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx>)

Try actually accessing the IEnumerable which is returned, or just call;

```
var p = obj.ToPages().ToList();

```