使用封裝資源的物件
當您撰寫的程式碼使用封裝資源的物件時,您應該確定在使用完該物件時,會呼叫物件的 Dispose 方法。您可以使用 C# 的 using 陳述式,或其他適用於 Common Language Runtime 的程式語言中實作 try/finally 區塊,來執行這個動作。
C# 的 Using 陳述式
C# 程式語言的 using 陳述式會以較為自動的方式呼叫 Dispose 方法,您就無須撰寫太複雜的程式碼來建立和清除物件。using 陳述式會取得一或多項資源、執行您指定的陳述式,然後處置 (Dispose) 該物件。請注意,只有在物件的存留期 (Lifetime) 不超過其建構方法時,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# 以外的語言中撰寫使用封裝資源之物件的 Managed 程式碼時,請使用 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