【问题标题】:Can I set an event handler in initializer? [duplicate]我可以在初始化程序中设置事件处理程序吗? [复制]
【发布时间】:2019-11-04 07:26:30
【问题描述】:

我写下一段代码:

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

是不可能的表达吗?

【问题讨论】:

    标签: c# eventhandler


    【解决方案1】:

    大括号中的内容是初始化程序部分,您可以在其中仅初始化公共属性或字段。线

    Tick += etc
    

    没有初始化 Tick,它正在使用 += 向它添加一个事件处理程序,这是不可能的。

    但是你可以使用这个构造函数:

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

    个人觉得几行代码选项比较容易阅读。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 2014-11-19
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      相关资源
      最近更新 更多