I tend to agree with the above. There's nothing wrong with a for loop. Our in house codeing standards will never let us use the new version anyway. What I really argree with though is that your casting like syntax is just plain confusing. I don't really feel that similar syntax should only be distingishable because of context. I don't want to have to ask myself what context something is in, I just want to say "Ah it's a cast"
I don't have any real understanding of variance, but from the examples you showed and what I think is going on. I found the other way to be more straight forward. I like all of my modifiers to be in the same place so that I know where to look.