我可以在初始化程序中设置事件处理程序吗?

时间:2019-11-04 07:26:30

标签: c# eventhandler

我写下一个代码:

DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(1);
timer.Tick += (object sender, EventArgs e) =>
{
    //...
};
timer.Start();

但是我想用初始化器更简单地编写它。

所以,我尝试了这个:

new DispatcherTimer
{
    Interval = TimeSpan.FromSeconds(1),
    Tick += (object sender, EventArgs e) =>
    {
        //...
    }
}.Start();

但是它会发生错误(CS0103,CS0747)。

不可能表达吗?

1 个答案:

答案 0 :(得分:1)

大括号中的内容是初始值设定项,您只能在其中初始化公共属性或字段。线

Tick += etc

不是初始化Tick,而是使用+ =向其添加事件处理程序,这是不可能的。

不过,您可以使用以下构造函数:

new DispatcherTimer(
    TimeSpan.FromSeconds(1),
    DispatcherPriority.Normal,
    (sender, args) =>
    {
    //...
    },
    Application.Current.Dispatcher)
        .Start();

我个人认为几行代码选项更易于阅读。