1 回答

TA贡献1898条经验 获得超8个赞
您当前的代码存在几个问题:
OnEventRaise
当您应该使用事件本身时,您正在订阅该事件(即)process
。使用 lambda初始化操作的语法
showName
不正确。你需要使用Action showName = () => { // ... };
.
a.process -+ showName;
最后,要取消订阅该事件,您可以简单地在操作主体内部使用,但您需要先对其进行初始化以防止编译器抱怨。
在你的班级尝试这样的事情B
:
public class B
{
// subscribe the closure and delete it once it is invoked, can unsubscribe at anytime.
void subscribe(A a)
{
string name = "one shot subscriber";
Action showName = null;
showName = () =>
{
print(name);
a.process -= showName;
};
a.process += showName;
}
private void print(string s)
{
// ....
}
}
- 1 回答
- 0 关注
- 143 浏览
添加回答
举报