Re: [問題] delegate & event

看板C_Sharp (C#)作者 (靖)時間10年前 (2015/08/13 21:57), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《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://www.ptt.cc/bbs/C_Sharp/M.1439474248.A.DCE.html
文章代碼(AID): #1LpA98tE (C_Sharp)
文章代碼(AID): #1LpA98tE (C_Sharp)