我写下一个代码:
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)。
不可能表达吗?
答案 0 :(得分:1)
大括号中的内容是初始值设定项,您只能在其中初始化公共属性或字段。线
Tick += etc
不是初始化Tick,而是使用+ =向其添加事件处理程序,这是不可能的。
不过,您可以使用以下构造函数:
new DispatcherTimer(
TimeSpan.FromSeconds(1),
DispatcherPriority.Normal,
(sender, args) =>
{
//...
},
Application.Current.Dispatcher)
.Start();
我个人认为几行代码选项更易于阅读。