实例化对象并同时在数组内设置变量

时间:2018-02-06 16:00:19

标签: c#

我想实例化一个对象并使用short(为了效率目的)更改/设置数组中的变量,但这不起作用:

    private ClickBox[] clickBoxes = new ClickBox[]
    {
        new ClickBox().OnClick += (@object) =>
        {

        }
    };

class ClickBox
{
    public delegate void ClickEvent(Object @object);

    private ClickEvent clickEvent;

    public ClickEvent OnClick
    {
        get { return clickEvent; }
        set { clickEvent = value; }
    }
}

有没有人知道在此代码中返回对象而不是变量的方法?我知道在制作数组之后设置ClickEvent会有效,但对于大量项目来说这将是非常低效的。

谢谢。

1 个答案:

答案 0 :(得分:0)

你应该写一个构建器方法来实现它。

非常简单的东西可能是这样的:

static ClickBox createClickBox(Action<ClickBox> subscribe)
{
    var result = new ClickBox();
    subscribe(result);
    return result;
}

您可以使用它来初始化一个类的字段数组,如下所示:

readonly ClickBox[] clickBoxes =
{
    createClickBox(cb => cb.OnClick += o => { /* Code 1 */ }),
    createClickBox(cb => cb.OnClick += o => { /* Code 2 */ })
};

但我必须同意那些说这有点代码味道的人 - 虽然没有更多关于你打算如何使用它的背景,但很难说肯定。

另外,在谈论效率时:我假设您正在谈论减少代码行数而不是性能。