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

我写下一个代码:

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)。

不可能表达吗?

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

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

Tick += etc

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

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

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

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

本文链接:https://www.f2er.com/3168492.html

大家都在问