作者fo40225 (靖)
看板C_Sharp
标题Re: [问题] delegate & event
时间Thu Aug 13 21:57:24 2015
※ 引述《jodo1984 (XDDD)》之铭言:
: 首先感谢您抽空另外写一支程式让我参考
: 不过有点抱歉毕竟我c#功力还没有那麽深厚很多地方看不太懂, 想请问一下
: 1. 这个是甚麽意思
: EventHandler<SpeedEventArgs> handler =Interlocked.CompareExchange(ref
: this._tooSlowHandler, null, null);
CompareExchange有三个参数 分别是location1 value comparand
如果location1(第一个)与comparand(第三个)相等就用value(第二个)把location1取代掉
回传值是location1的原始值
这里只是要用Interlocked来做执行绪安全的读取
: 2.请问您怎麽没有用到委派而是用执行续, 如果要使用事件不需要搭配委派吗?
private EventHandler<SpeedEventArgs> _tooFastHandler;
private EventHandler<SpeedEventArgs> _tooSlowHandler;
这两个就是私有实体委派栏位 拿来放方法
只是我使用了系统内建拿来放事件处理常式的泛型委派
: 3.我用debug模式car.Speed 好像数值没有传入 如果我要将数值传入需要怎麽修正?
: private void TooFast(object o, SpeedEventArgs e)
: {
: var car = o as Car;
: if (car != null)
: {
: MessageBox.Show(string.Format("{0}目前的速度为{1},超过200,请
减
: 速慢行", car.Name, car.Speed));
: }
: }
: private void TooSlow(object o, SpeedEventArgs e)
: {
: var car = o as Car;
: if (car != null)
: {
: MessageBox.Show(string.Format("{0}目前行驶速度{1},已低於限速
: 80,请加速行驶",car.Name, car.Speed));
: }
: }
我用文章内的程式码
下中断点在private void TooFast(object o, SpeedEventArgs e)下的那个花括号
速度设300 会中断 您可再试试
: 4. 请问有推荐C#书籍吗?
初阶的话 就到书店找本看得懂的 照着做
进阶的话 CLR via C# 与 C# in Depth 这两本都对C#进阶的机制说明得很好
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.230.205.224
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1439474248.A.DCE.html