class B
{
public delegate void CallBack();
public event CallBacl cllBack;
void Publish()
{
cllBack();
}
}
class A
{
B b = new B();
b.cllBack += new CallBack(test_this)
public void test_this()
{
}
}
答案 0 :(得分:2)
if (cllBack != null) cllBack();
答案 1 :(得分:1)
答案 2 :(得分:0)
b.cllBack += new CallBack(test_this)
当然在a中添加了对b的引用,所以即使你不再在任何其他地方使用b,b仍然被引用并且不会被垃圾收集。
我认为这是一种更简洁的方法:
class A
{
private delegate B.CallBack myCallBack;
private B b = new B();
public A
{
myCallBack = new B.CallBack( test_this );
b.cllBack += myCallBack;
}
public void Close()
{
c.cllBack -= myCallBack;
}
}
简而言之,您需要回调时注册,并在不再需要回调时取消注册。
HTH
马里奥
PS:小心,你的b是ctor的本地人