EffectPassCollectionクラスのforeach文でガベージが発生してしまう問題を回避する方法

 XNA Game Studio 3.1において、次のようなコード(effectはEffectクラスのインスタンス)では、ガベージが発生してしまいます。
(ただし、将来のバージョンで、この問題が続くかは不明です。)

foreach (var pass in effect.CurrentTechnique.Passes) {
}

 この問題について、2つの解決方法を以下に書きました。1つめは普通の方法で、2つめが挑戦的な方法です。

http://xna.xelf.info/#EffectPassCollection%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AEforeach%E6%96%87%E3%81%A7%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86%E5%95%8F%E9%A1%8C%E3%82%92%E5%9B%9E%E9%81%BF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%20%E7%9B%AE%E6%AC%A1%20%E3%81%93%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E6%93%8D%E4%BD%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6