[C#]Effective C# Item 15: Use using and try/finally to Clean Up Resources

非拖管資源故名思義該資源是非拖管的,跟一般的托管資源不同的是,這些非拖管資源在建立後必須自行去作釋放的動作,不然會產生資源洩漏。為解決這樣的問題,在.NET BCL提供IDisposable介面,提供.NET程式非拖管資源釋放的標準做法,藉由呼叫該介面的Dispose()方法,我們可以對非拖管的系統資源進行釋放的動作。在一般狀況下,這樣的釋放動作應由使用者自行叫用,也就是說當在程式中使用實作有IDisposable介面的類別時,需記得自行呼叫Dispose()方法去釋放資源。若忘了呼叫在釋放的動作,在標準的IDisposable介面實作上也提供了額外的保險措施,會在IDisposable介面實作時為解構子加入Dispose()方法的調用。因此若使用者忘了自行呼叫Dispose()方法釋放資源,在物件解構時仍會將資源給釋放掉。 ...

February 9, 2011 · Larry Nung

[C#]Effective C# Item 14: Use Constructor Chaining

在撰寫程式時,為了方便類別的使用,無法避免的有時我們會為類別加上不同的建構子,若其中有相同的初始動作,我們可以有以下三種作法: ...

February 8, 2011 · Larry Nung

.NET 4.0 New Feature - Corrupted State Exceptions(CSEs)

在.NET 4.0 以前的例外處理機制,開發人員能透過Try…Catch將所有例外攔截,也許是用來做一致性的例外處理、也許是將例外吞掉。不論是哪種狀況我們都可以藉由例外處理機制攔截到所有的例外。 ...

January 25, 2011 · Larry Nung

.NET 4.0 New Feature - Performance Improvements for Enumerating File System Entries and File Contents

.NET 4.0 BCL 在遍尋檔案系統項目與檔案內容方面新增了一些新的方法,可先回傳集合的迭代器物件,待開始遍尋迭代器時才逐步載入對應的資料,可延遲載入動作的執行,避免處理大量資料時的效能耗費,可改進效能並保有迭代器簡單好用的優點。 ...

January 20, 2011 · Larry Nung

Visual Studio 2010 New Feature - Consume First Mode

在以往我們使用Visual Studio,當輸入部份關鍵字Intellisense就會自動幫忙找到可能要輸入的Intellisence提示項目,並將最符合的Intellisence提示項目選取,此時若我們按下Tab或是Space,Visual Studio會自動幫我們用選取的字串帶入編輯區。 ...

January 17, 2011 · Larry Nung

.NET 4.0 New Feature - System.Device.Location

.NET 4.0 BCL中新增了System.Device.Location命名空間,該命名空間內提供許多類別允許應用程式開發人員在Windows 7以後的作業系統使用單一 API 輕鬆存取裝置位置,開發人員不需去考量電腦中可以使用的位置提供者,也不需要為多個位置提供者排定彼此的優先權與中間的轉換,透過這個命名空間開發人員可以更專注於位置取得程式的撰寫,而不需花費心思考量各式各樣的位置提供者。 ...

January 13, 2011 · Larry Nung

Implement an Application Plugin Mechanism Using Reflection

身為程式開發人員不能避免的時常會需要因應客戶的需求下去為元件做些客制或擴充,有些應用程式為了讓程式便於處理這部分的需求會為應用程式加上擴充的機制,這樣的擴充機制能讓應用程式很輕鬆的達到大部分的擴充需求,也能將此機制開出讓有此需求的用戶能自行依自己處理擴充的動作。實作應用程式擴充元件機制在.NET有許多的作法,這邊將介紹如何透過反射(Reflection)技術來實作這樣的機制。 ...

January 11, 2011 · Larry Nung

.Net 4.0 New Feature - SortedSet

SortedSet是.NET 4.0新加入的類別,位於System.Collections.Generic命名空間內,能夠依排序順序維護不重覆的物件集合。為一自我平衡紅黑樹的實作,可隨著項目的插入和刪除維護排序的順序,無法從特定位置訪問特定元素,使用上與現有的HashSet類別有點類似,一樣提供許多數學集合 (Set) 運算,像是交集、聯集、與差集等,但多了自動排序的功能,此外還具備有Min、Max的取得,與取裡面子集的功能。 ...

January 6, 2011 · Larry Nung

[.NET Concept]throw V.S throw ex

在例外處理時,有些情況下我們會需要將例外攔截後再次向外擴,在此時我們有兩種可選擇的寫法,一種是很多初學者會採用的透過throw ex來外擴例外,這種寫法須避免使用,因為採用此種寫法會改變的原來的呼叫堆疊,造成除錯上的困難。 ...

January 3, 2011 · Larry Nung

DotNetZip

DotNetZip為一輕便又易於使用的開放源碼壓縮函式庫,開發人員可透過DotNetZip函式庫來做壓縮資料、讀取壓縮資料、更新壓縮資料、與列出壓縮檔資料內容等功能,能支援壓縮檔密碼保護、Zip64格式、產生自解壓縮檔、與Unicode編碼。 ...

January 3, 2011 · Larry Nung