Foo* would be a pointer to a Foo Wink

Anyway, I'm not sure if I totally understand what you're aiming for. 'foreach' is the syntactical sugar around IEnumerable since it manages the whole while(collection.GetEnumerator().MoveNext()) thing for you.