假设我有这段代码:
autoUpdate
我无法使用'this'关键字。有没有其他方法来实现这一目标? 谢谢!
答案 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();