[英]Creating a resource in the using block vs outside the using block
例如,可以通過以下方式創建可處置資源的新實例:
var resource = CreateNewResource();
以下編碼樣式有什么區別(如果有)?
第一樣式:
var resource = CreateNewResource();
using (resource)
{
//Use resource
}
第二種風格:
using (var resource = CreateNewResource())
{
//Use resource
}
如果我們不打算在using塊之外的任何地方使用資源,那么第一種樣式的編碼習慣不好嗎?
即使我們希望在using塊外使用資源,是否應該鼓勵在using塊外使用一次性資源的願望 ?
第一個值得注意的區別是,在您的第一個代碼片段中,變量資源仍然在using塊之后聲明,因此有人可以在使用它之后使用它,這很糟糕。
var resource = CreateNewResource();
using (resource)
{
//Use resource
}
...
// Unknowingly continues to use resource
resource.BadActOnDisposedObject();
如果您確定要更自由地使用和分配資源,我建議使用try / finally,如下所示:
Resource resource = null;
try
{
// do whatever
resource = CreateNewResource();
// continue to do whatever
}
finally
{
if (resource != null)
{
resource.Dispose();
resource = null;
}
}
這樣可以確保在任何情況下都可以處理您的資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.