我遇到了一些奇怪的问题,并且已经有了解决方法,但是我认为我不太了解。
如果我在一个类中多次调用下面的方法:
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”,并且它是“ Method”之外的“ delegate1Handler”,在此“ delegate1Handler”仅初始化一次,“ a”可以再次被初始化-没问题! (或者也许是我不知道)
最佳答案
a.Delegate1Handler = ViewSomething();
对我来说,这表明ViewSomething()
是一种返回委托的方法。
每次运行ViewSomething()
时都会调用Method()