我用后端CS创建了一个模板对象,如下所示:
public partial class GridTemplate : StackLayout
{
public event EventHandler Action;
public GridTemplate()
{
InitializeComponent();
}
public ICommand TapButtonPressed => new Command((object componentIdentifier) =>
{
this.Action?.Invoke(this, new EventArgs());
});
}
我可以像这样在C#中创建一个新对象:
var cell = new GridTemplate
{
BackgroundColor = Color.White,
Text = row.Name,
Label = "ABC",
};
但是我无法在{ }
但是我可以这样做:
cell.Action += openCategoriesPage;
有人可以解释为什么构造对象时不能分配操作吗?
答案 0 :(得分:1)
首先,您不允许执行以下操作:
var cell = new GridTemplate
{
Label += "ABC"
};
与Label = Label +“ ABS”相同-第二个Label不存在,因为未构造对象。
关于事件,它们只是一种封装方式,当您执行+ =时将在后台生成的是调用add方法,例如:
cell.Action += openCategoriesPage; will become
cell.addAction(openCategoriesPage)
由于您仍无法构建对象,因此您无法在{}用法中调用方法。
您可以通过CLR Book了解有关C#中事件的更多信息。