使用封裝資源的物件

Old發表於2014-11-25

使用封裝資源的物件

MSDN

如果您要編寫程式碼,而該程式碼使用一個封裝資源的物件,您應該確保在使用完該物件時呼叫該物件的 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

 

相關文章