[闲聊] 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