... Heh, no, yield isn't the same as a continuation.
Yield, for iterators at least, is basically just calling a function that you've passed in.
In Ruby (and now C#) and many other languages, there's what appears to be syntactic sugar around this idiom, and especially in C# it's a bear to follow what's happening because of the sea of syntax.
But all that's really happening is, you pass in an anonymous function, and when the iterator calls yield(x), it calls that anonymous function with x.
In C#, you're saying
okay, for this foreach doodle with a variable i, HereIsAnInterator(initialized) {
but you can imagine this whole block as
a function that gets called with i
every time yield() is called.
}
Behind the scenes, the stuff between the braces gets turned into a function f, and attached to HereIsAnIterator, accessible via (at least) yield().
Yield for iterators is just sugar around an anonymous function.
Continuations are a whole other bag o worms. (edit: originally invented as a powerful memory-wasting device, some people now find them almost useful ;) ).