我有一个案例,我希望给定的事件执行一次,并且只执行一次。我试图这样做,但我有问题(否则我不会问)。请注意,以下代码位于决定需要触发事件的函数内部。
EventHandler h = delegate(Object sender, EventArgs e) {
FiringControl.TheEvent -= h; // <-- Error, use of unassigned local variable "h"
// Do stuff
}
FiringControl.TheEvent += h;
一般情况下,这应该有效,因为代表保留范围的方式直到它们完成运行之后,但是,因为当我尝试使用它时h
正在构建过程中,它仍然被认为是显然是“未初始化”。
答案 0 :(得分:3)
您可以先设置h = null,然后将其设置为等于其他内容吗?喜欢这个?
EventHandler h = null;
h = delegate(Object sender, EventArgs e) {
FiringControl.TheEvent -= h; // <-- Error, use of unassigned local variable "h"
// Do stuff
}
FiringControl.TheEvent += h;
但你确定这是正确的方法吗?你想要做什么呢?