祭じゃ祭じゃー、とむりやり参入してみるテスト。
 やまだです。 
 もともとは「ループを使わずに配列の順序を逆にする。」というお題。  
元ネタはこちら:
ホワイトボードプログラミング
反転...ですかー  
とりあえず、反則っぽいけどインデクサ使ってやってみましたー。
 まずはコード。 
  class ReverseIndexer {
    int[] array;
    int length;
    pubic ReverseIndexer(int[] originalArray) {
        array = originalArray;
        length = array.Length;
    }
    public int this[int i] {
        set { this.array[length - i -1] = value; }
        get { return this.array[length - i - 1]; }
    }
}  
class Program {
    static void Main(string[] args) {
        int[] oldArray = new[] { 1, 2, 3, 4, 5 };
        ReverseIndexer newArray = new ReverseIndexer(oldArray);
        System.Console.Writeline(newArray[0]);
        System.Console.Writeline(newArray[1]);
        System.Console.Writeline(newArray[2]);
        System.Console.Writeline(newArray[3]);
        System.Console.Writeline(newArray[4]);
    }
} 
 IEnumerable なんか実装したりはしません。ループになるからw  
で、このコードから  
 「配列の順序を逆に」というだけで、「逆の配列を用意しろ」なんて言ってないんじゃないの?
 だったら、配列一式を最初から用意する必要なんてないよいよね。最初から一式揃えなくても、
 必要なものを必要なときに手に入れられればいいという考え方があってもよいんじゃないかなー。
 効率ばかり追い求めないで、遊び心を持つことも必要かも。そこから何かが生まれることもあるし。 
 という考えがあると思うか否かは読み手の自由です。 < をい!  
少なくとも私から遊び心をとったら何も残らないような気がする :-P
 では。