1 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
您當(dāng)前的代碼存在幾個(gè)問(wèn)題:
OnEventRaise
當(dāng)您應(yīng)該使用事件本身時(shí),您正在訂閱該事件(即)process
。使用 lambda初始化操作的語(yǔ)法
showName
不正確。你需要使用Action showName = () => { // ... };
.
a.process -+ showName;
最后,要取消訂閱該事件,您可以簡(jiǎn)單地在操作主體內(nèi)部使用,但您需要先對(duì)其進(jìn)行初始化以防止編譯器抱怨。
在你的班級(jí)嘗試這樣的事情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 關(guān)注
- 141 瀏覽
添加回答
舉報(bào)