我想实例化一个对象并使用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会有效,但对于大量项目来说这将是非常低效的。
谢谢。
答案 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 */ })
};
但我必须同意那些说这有点代码味道的人 - 虽然没有更多关于你打算如何使用它的背景,但很难说肯定。
另外,在谈论效率时:我假设您正在谈论减少代码行数而不是性能。