A trivial example of an \"infinite\" IEnumerable would be
IEnumerable Numbers() { int i=0; while(true) { yield return unchecked(i++); } } >
If it wasn't lazy evaluation, your first example won't work as expected in the first place.