为什么 C# lambda 表达式在类范围内使用时不能使用实例属性和字段?看这个例子:
public class Point:INotifyPropertyChanged
{
public float X {get; set;}
public float Y {get; set;}
PropertyChangedEventHandler onPointsPropertyChanged = (_, e) =>
{
X = 5;
Y = 5; //Trying to access instace properties, but a compilation error occurs
};
...
}
为什么这是不允许的?
编辑
如果我们能做到:
public class Point:INotifyPropertyChanged
{
public float X {get; set;}
public float Y {get; set;}
PropertyChangedEventHandler onPointsPropertyChanged;
public Point()
{
onPointsPropertyChanged = (_, e) =>
{
X = 5;
Y = 5;
};
}
...
}
为什么我们不能onPointsPropertyChanged
像类范围内的其他字段一样初始化?例如:int a = 5
。该字段onPointsPropertyChanged
将在构造函数执行后始终使用。