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 回答