为什么在定义对象时不能添加事件?

时间:2018-08-02 10:17:33

标签: c# xamarin xamarin.forms

我用后端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;

有人可以解释为什么构造对象时不能分配操作吗?

1 个答案:

答案 0 :(得分:1)

首先,您不允许执行以下操作:

var cell = new GridTemplate
{
    Label += "ABC"
};

与Label = Label +“ ABS”相同-第二个Label不存在,因为未构造对象。

关于事件,它们只是一种封装方式,当您执行+ =时将在后台生成的是调用add方法,例如:

cell.Action += openCategoriesPage; will become
cell.addAction(openCategoriesPage)

由于您仍无法构建对象,因此您无法在{}用法中调用方法。

您可以通过CLR Book了解有关C#中事件的更多信息。