4

構築中に匿名タイプのメンバーにアクセスする方法はありますか?

例えば

 enumerable.select(i => new
 {
     a = CalculateValue(i.something), // <--Expensive Call
     b = a + 5 // <-- This doesn't work but i wish it did
 }

同じ目標を達成するための代替案を検討することをいとわない、それは基本的に私が列挙を投影していることであり、予測の一部は高価な計算であり、その値は複数回使用されます、私はそれを繰り返したくありません、またそれを繰り返します呼び出しはただ乾燥を感じません。

4

1 に答える 1

6

新しい匿名オブジェクトはまだ実際に割り当てられておらず、そのプロパティも使用できないため、これは不可能です。次の操作を実行できます。

enumerable.select(i =>
    {
        //use a temporary variable to store the calculated value
        var temp = CalculateValue(i.something); 
        //use it to create the target object
        return new 
        {
            a = temp,
            b = temp + 5
        };
    });
于 2013-02-22T05:08:13.387 に答える