我有一个案例,我想要一个给定的事件执行一次,并且只执行一次。我试着这样做,但我有问题(否则我不会问)。请注意,以下代码位于决定需要激发事件的函数内部。
EventHandler h = delegate(Object sender, EventArgs e) { FiringControl.TheEvent -= h; // <-- Error, use of unassigned local variable "h" // Do stuff } FiringControl.TheEvent += h;
一般来说,这应该是有效的,因为在代理运行完成之前,范围是为代理保留的,但是,由于 h 当我试图使用它时,它仍被认为是“未初始化”的,显然。
h
您可以先设置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;
但是你确定这是正确的方法吗?你到底想做什么?