使用封裝資源的物件
如果您要編寫程式碼,而該程式碼使用一個封裝資源的物件,您應該確保在使用完該物件時呼叫該物件的 Dispose 方法。要做到這一點,可以使用 C# 的 using 語句,或使用其他面向公共語言執行庫的語言來實現 try/finally 塊。
C# 的 Using 語句
C# 程式語言的 using 語句通過簡化必須編寫以便建立和清理物件的程式碼,使得對 Dispose 方法的呼叫更加自動化。using 語句獲得一個或多個資源,執行您指定的語句,然後處置物件。請注意,using 語句只適用於這樣的物件:這些物件的生存期不超過在其中構建這些物件的方法。下面的程式碼示例將建立並清理 ResourceWrapper 類的例項,如 C# 示例實現 Dispose 方法中所示。
class myApp { public static void Main() { using (ResourceWrapper r1 = new ResourceWrapper()) { // Do something with the object. r1.DoSomething(); } } }
以上合併了 using 語句的程式碼與下面的程式碼等效。
class myApp { public static void Main() { ResourceWrapper r1 = new ResourceWrapper(); try { // Do something with the object. r1.DoSomething(); } finally { // Check for a null resource. if (r1 != null) // Call the object's Dispose method. r1.Dispose(); } } }
使用 C# 的 using 語句,可以在單個語句(該語句在內部同巢狀的 using 語句是等效的)中獲取多個資源。有關更多資訊及程式碼示例,請參見 using 語句(C# 參考)。
Try/Finally 塊
當您用 C# 以外的語言編寫託管程式碼時,如果該程式碼使用一個封裝資源的物件,請使用 try/finally 塊來確保呼叫該物件的 Dispose 方法。下面的程式碼示例將建立並清理 Resource 類的例項,如 Visual Basic 示例實現 Dispose 方法中所示。
class myApp Public Shared Sub Main() Resource r1 = new Resource() Try ' Do something with the object. r1.DoSomething() Finally ' Check for a null resource. If Not (r1 is Nothing) Then ' Call the object's Dispose method. r1.Dispose() End If End Try End Sub End Class