[閒聊] delegate有點難理解

作者: SuicidePeko (string int = true;)   2021-10-04 13:03:35
最近在用printdocument寫東西
上網copy人家作法
不太懂為什麼要這樣寫
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(this.PrintHandler);
pd.Print();
private void PrintHandler(object sender, PrintPageEventArgs args)
{
...
}
PrintPageEventHandler為什麼要做成delegate==
然後那個object sender是蛇摸神秘的作法
而且明明是void 為什麼可以拿去PrintPage
這到底是什摸
作者: amsmsk (449)   2021-10-04 13:06:00
可以一次印多個不同的吧
作者: SuicidePeko (string int = true;)   2021-10-04 13:08:00
方便異步化還是純粹為了圖形介面用??看了一下好像是gui wpf的寫法可是我純console 好像用不到
作者: lopp54321010 (嘻嘻010)   2021-10-04 13:09:00
將PrintPage這個動作變成Event抽象化可以接各種不同實作的Handler
作者: SuicidePeko (string int = true;)   2021-10-04 13:10:00
原來它是一個event 謝謝 我查查看喔喔好像懂了 把printpage給人接自己要的動作看到+=下意識以為是字串==
作者: lopp54321010 (嘻嘻010)   2021-10-04 13:14:00
C#後來有提供另一個叫Action的類別底層也是delegate 不過語法簡化很多缺點是每次註冊事件都有GC 遊戲太頻繁註冊會卡爆https://github.com/SixWays/Relay後來都用這葛 用原生陣列自己管理function註冊然後這種需求常發生在observer patternㄅ
作者: SuicidePeko (string int = true;)   2021-10-04 13:20:00
謝謝你==以後寫unity可以用是說+= -=原來負荷這麼重 我這個照co然後每次列印都會做一次剛好可以改== lopp真棒 我愛你

Links booklink

Contact Us: admin [ a t ] ucptt.com