gpt4 book ai didi

c# - 编写内联事件处理程序是不好的做法吗

转载 作者:IT王子 更新时间:2023-10-29 03:46:35 26 4
gpt4 key购买 nike

编写内联事件处理程序是不好的做法吗?

对我来说,当我想在事件处理程序中使用局部变量时,我更喜欢使用它,如下所示:

我更喜欢这个:

// This is just a sample
private void Foo()
{
Timer timer = new Timer() { Interval = 1000 };
int counter = 0; // counter has just this mission
timer.Tick += (s, e) => myTextBox.Text = (counter++).ToString();
timer.Start();
}

取而代之的是:

int counter = 0; // No need for this out of Boo & the event handler

private void Boo()
{
Timer timer = new Timer() { Interval = 1000 };

timer.Tick += timer_Tick;
timer.Start();
}

void timer_Tick(object sender, EventArgs e)
{
myTextBox.Text = (counter++).ToString();
}

最佳答案

这绝对没问题 - 虽然有两个警告:

  • 如果您要在闭包中修改局部变量,则应确保您了解自己在做什么。
  • 您将无法取消订阅该事件

通常我只内联真正简单的事件处理程序——对于任何更复杂的事情,我使用 lambda 表达式(或匿名方法)来订阅对具有更合适方法的方法的调用:

// We don't care about the arguments here; SaveDocument shouldn't need parameters
saveButton.Click += delegate { SaveDocument(); };

关于c# - 编写内联事件处理程序是不好的做法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4063753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com