The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

利用 .NET 支援的數值格式來解析各種複雜的數字表示式

前陣子處理了一個特殊的案子,該客戶提供一批與「會計」有關的數據,在客戶手中的資料來源裡,我拿到一個這樣的數值字串:(95,403.8075)e-02,在會計的領域中刮號代表「負數」的意思,但這樣的數字在 .NET 應該怎樣 Parse 比較好呢?其實在 .NET 裡已經內建了許多好物等著你去挖掘了!

... 繼續閱讀 ...

如何利用 Thread 類別限定某段程式碼的執行時間

上週我們有個案子發生程式 Hang 住的情況 (就是程式執行到某一行停止不動的情況),程式執行到某個資料庫寫入動作的時間過長導致系統無法正常運作,由於資料庫那端我這邊無法快速修復,且此狀況又是偶發的,因此我就改以多執行緒的運作方式限制程式執行的時間,以免造成系統其他部分的正常運作,算是一個小小的開發技巧。

... 繼續閱讀 ...

如何利用 .NET 的 Regex 過濾所有特殊字元 (其他語言適用)

今天有個同事寫了一個小程式要將欄位中所有特殊字元過濾掉,他雖然用的是 規則運算式 (Regular Expression) 但寫法卻有瑕疵,我在 Code Review 的時候立即聞到這個程式碼的壞味道,很快的也用另一段更短的規則運算式 來解決這個小需求,而且也更加符合客戶的需要。

... 繼續閱讀 ...

如何避免相同的 ConsoleApp 或 WinForm 同時間重複執行

前幾天在寫主控台程式 (Console Application) 時突然想到一個避免程式在同時間重複執行的機制,在噗浪發問與自行研究過後發現最彈性的實做方式是利用 .NET 內建的 Mutex 類別進行實做,幾乎任何情況下都能輕易實做程式不重複執行的目的,包括單機環境與多人使用的伺服器環境。

... 繼續閱讀 ...

如何確保寫入檔案時「檔案名稱」與「目錄名稱」正確無誤

當要在檔案系統 (Filesystem) 寫入檔案時必須指定完整的路徑與檔名,但有時「檔案名稱」需透過程式指定時就有可能發生「檔案名稱無效」的錯誤,這時就需要透過程式過濾掉一些無效字元,才能讓成功建立檔案。

... 繼續閱讀 ...

關於 C# 的 using 陳述式在實務應用上的基本觀念

之前偶有機會看到 MSDN 論壇上有人提到關於使用 using 陳述式的錯誤觀念 (看到不止一次),由於自己也經常在用,不知道原來有人會誤以為使用 using 會將所有例外狀況 (Exception) 給吃掉,但事實上並非如此,請讓我娓娓道來。

... 繼續閱讀 ...

解決 XmlWriter 輸出的 XML 無法正確設定 Encoding 的問題

這問題我遇到第二次了,第一次遇到時濛濛懂懂的解決了。但不知為何越來越有種不想讓自己迷迷糊糊過一生的感覺,所以拼了命也要將模糊的地帶給釐清,於是又花了好幾個鐘頭把來龍去脈給釐清,避免日後又再度遇到同樣的問題。這是個關於透過 XmlWriter 撰寫 XML 的問題,不管我如何設定 Encoding 編碼都無法改變輸出的編碼,經過一番努力辯證之後才徹底釐清觀念,以後也不會再混淆了。

... 繼續閱讀 ...

如何利用「自訂例外狀況」處理無法繼續執行的錯誤

try-catch 幾乎是每天必碰的程式碼,新手程式設計師應該很容易瞭解 try-catch 該怎麼使用,但不見得能深入思考「為什麼」要有 例外狀況(Exception) 的存在,存在的理由很多,但我個人認為最重要也最單純的理由是『例外狀況試圖不讓你的程式繼續執行下去』,這聽起來像是個廢話,但或許有人沒有認真的想過這個問題,而這樣的一個理由在面對日常程式開發上又有什麼重大的影響呢?

... 繼續閱讀 ...

如何善用「偵錯模式」進行 ASP.NET 網站或 .NET 程式開發

在專案開發初期,我們都會寫很多測試程式碼(Test Code)用來紀錄或顯示程式執行時期的狀態,雖然開發環境有中斷點 (Breakpoint) 可以使用,但程式部署到測試機或正式機時卻未必有開發工具可用,這時利用自己寫的測試程式碼就非常有用,但專案上線前若又需要把測試程式碼刪除頗為麻煩,今天我就打算分享一些很實務的偵錯開發技巧。

... 繼續閱讀 ...