在Object初始值设定项中使用“this”

时间:2016-02-17 15:25:24

标签: c# object-initializers

假设我有这段代码:

autoUpdate

我无法使用'this'关键字。有没有其他方法来实现这一目标? 谢谢!

2 个答案:

答案 0 :(得分:3)

您无法在对象初始值设定项中执行此操作,您必须在创建MyObj的实例后在外部执行此操作:

var resultList = collection.Select(myObj => 
{
    var newObj = new MyObj
    {
        X = item.foo,
        Y = item.bar,
    };
    newObj.Z = newObj.X + newObj.Y;
    return newObj;
}).ToList();

答案 1 :(得分:2)

在对象初始化器中允许它将是危险的,您可以在其构造函数完成执行之前访问该对象的属性。如果您知道自己的属性不做任何奇怪的事情,如果您知道在设置值后立即调用getter只会产生您设置的值,则可以将逻辑移出初始化器。

var resultList = (
    from item in collection
    let X = item.foo
    let Y = item.bar
    let Z = X + Y
    select new MyObj {
        X = X,
        Y = Y,
        Z = Z
    }).ToList();
相关问题