我有这个代码:
public class MyClass
{
public int X { get; set; }
public int Y { get; set; }
private Lazy<int> lazyGetSum = new Lazy<int>(new Func<int>(() => X + Y));
public int Sum{ get { return lazyGetSum.Value; } }
}
给我这个错误:
A field initializer cannot reference the non-static field, method, or property.
我觉得通过lazy访问一个非静态成员是很合理的,怎么办?
* 编辑 *
接受的答案完美地解决了问题,但要一如既往地了解问题的详细和深入原因,您可以阅读 Joh Skeet's answer。
最佳答案
您可以将其移动到构造函数中:
private Lazy<int> lazyGetSum;
public MyClass()
{
lazyGetSum = new Lazy<int>(new Func<int>(() => X + Y));
}
有关问题原因的更多详细信息,请参阅下面的@JohnSkeet 回答。 Accessing a non-static member via Lazy<T> or any lambda expression
关于c# - 通过 Lazy<T> 或任何 lambda 表达式访问非静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14029425/