クラススコープで使用されている場合、C#ラムダ式がインスタンスプロパティとフィールドを使用できないのはなぜですか? 次の例を参照してください。
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
は、コンストラクターの実行後に常に使用されます。