我正在经历一些奇怪的事情并且已经有了解决方法,但我认为我并不理解。
如果我在课堂上多次调用方法:
public void Method()
{
Foo a = new Foo();
a.Delegate1Handler = ViewSomething();
}
如果我在它所在的类的一个实例中多次调用Method()...我每次都重新初始化“a”但由于某种原因,a.Delegate1Handler
仍然在前一次初始化时,并且因此,一次又一次地调用ViewSomething()......
我觉得我忘记了一些关键的东西吗?
Foo的胆量看起来像:
public delegate void Delegate1(T t);
public Delegate1 Delegate1Handler { get; set; }
编辑:(我在下面介绍了解决方法,但我仍然不明白为什么会这样做) - >
在“方法”之外初始化“a”和它的delegate1Handler,其中 delegate1Handler 仅初始化一次,“a”可以再次重新初始化 - 没问题! (或者也许是我不知道)
答案 0 :(得分:1)
a.Delegate1Handler = ViewSomething();
对我来说,这表明ViewSomething()
是一个返回委托的方法。
ViewSomething()
时都会调用 Method()
答案 1 :(得分:0)
我认为@hans在他的评论中得到了类似的东西
public void Method()
{
Foo a = new Foo( ViewSomething );
}
// ...
public class Foo
{
public Foo( Delegate1 del ) // note: accepting the delegate parameter
{
DelegateHandler = del;
}
}
public delegate void Delegate1(T t);
public Delegate1 Delegate1Handler { get; set; }