看板 C_Sharp 關於我們 聯絡資訊
原文怒刪~~ 我來提供第四點一點想法 程式碼:https://ideone.com/XnMPPo 舉例: 我有一個相機,但是雜訊很多,因此我使用了average的方法做平均 因此我要設定average的值 我要在GUI中text設定值,但是它是string類別,你知道的 因此我需要轉換程某個特定類別 但是這個特定類別會可能不一樣,舉例來說,可以是int, double, float, short... 每次都要做轉換,就要 Int32.Parse(), double.Parse()... 然後程式碼重寫一遍 這樣不是很麻煩嗎? 因此就寫了一個轉換器宣告如下: Setter<想轉換的型態> (來源TextBox, 取得目標物被設定後的值, 給予目標物欲設定的值, 報錯關鍵字, 設定後的狀態) 好處是該setter可以用在很多地方,像是: 如果是FPS,就會像 Setter<double>( sender as TextBox, new DoublePtrVoid(camera.FPS), new VoidPtrDouble(camera.FPS), "Fps", cameraControlGUI.LabelFpsShow); 如果是拍照後的存檔路徑: Setter<string>( sender as TextBox, new StringPtrVoid(camera.SavePicPath), new VoidPtrString(camera.SavePicPath), "SavePath", cameraControlGUI.LabelSavePathShow); 如果是取像平均: Setter<int>( sender as TextBox, new IntPtrVoid(camera.Average), new VoidPtrInt(camera.Average), "Average", cameraControlGUI.LabelAvgShow); 那你會問:輸入格式不符怎麼辦? 1. 如果是使用者白目,應該給數字的給文字,那就會被轉換器擋下來,然後報錯 2. 如果是硬體限制呢? 像是一秒要拍個1000000000000000張照片? 阿你可以寫在camera.FPS()那個Get/Set方法裡面擋住他,然後報錯 這也是為什麼我會除了有輸入值的delegate方法,還要有輸出值的delegate 因為你不會知道設定有沒有成功啊!!! 3. 為什麼要有text的 "\r\n" ,因為我把他設定成多行,但只有你按下 "換行" ,我的程式才會鳥你,不然一律視為你 "正在輸入",尚未輸入完成。 一點建議,僅供參考 話說上班回屁話,會不會被開除阿 (抖抖抖) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.5.27 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1517452448.A.219.html ※ 編輯: s4300026 (42.73.5.27), 02/01/2018 10:34:47
commandoEX: 現在講泛型感覺太早了吧@ @ 02/01 19:34
aa12783509: 謝謝你~ 你前半段提的概念 我有點可以理解 02/01 20:27
aa12783509: 但是後面的程式碼 或許就是要多看 多了解才會清楚了 02/01 20:28
aa12783509: 你講的這個 比較像是在影像處理吧!? 之前我大學同學 02/01 20:28
aa12783509: 他有做這部分 那時候有聽他大概講 他們就適用C#做的!! 02/01 20:28
s4300026: 因為原po在問有沒有更通用的寫法,那就只能走泛型了囧 02/02 07:59
s4300026: 實際上這寫法還牽扯到 不定型委派,和關注點分離。因為 02/02 08:05
s4300026: 泛型的關係,使你的委派指標不能被定下來,這就要多找一 02/02 08:05
s4300026: 個不定型委派的語法,至於為什麼要用委派指標,則與關注 02/02 08:05
s4300026: 點分離有關,因為關注點分離,這寫法還可以用在其他地 02/02 08:05
s4300026: 方,而不僅限於影像處理。 02/02 08:05
aa12783509: 哈哈哈 了解了 謝謝你 看你提到的 都偏向影像 會問 02/02 08:19
aa12783509: 有沒有比較常用的寫法 是因為說 我的觀念是建立在我 02/02 08:19
aa12783509: 自己查的資料 所以會有那種 東湊西湊的感覺 不確定正 02/02 08:19
aa12783509: 確性 或者是其實大家會其他類似更適合的寫法 不過也 02/02 08:19
aa12783509: 是謝謝你喲 感謝 02/02 08:19