Did you read the article? It does not have to do anything with C#, it is a compiler bug on Mono. Also some of his recommendations make sense on code that is executed on a tight loop, but is fine to do on instances where it is not executed all the time.
[–] draco_nite 0 points 1 point 1 point (+1|-0) ago
So...just use the good ole (int i; i < whatever; i++) then?