我喜歡使用(){}語句來控制範圍和可讀性。您不僅可以創建對象,使用它們,整齊地處理它們,但你也可以使用它像這樣:由於可讀性原因實現IDisposable
假設將myInstance是在代碼中的一些其他地方MyClass的實例 - 即一個方法參數什麼的
爲MyClassusing (var t = myInstance) {
t.Foo= "Hello";
t.Bar= "World";
...
}
定義:
public class MyClass : IDisposable
{
public string Foo {get; set;}
public string Bar {get; set;}
...
public void Dispose() {}
}
這使得代碼更簡潔,更具可讀性(我覺得),當然更容易輸入。然而,爲了廣泛使用這個,你必須實現IDisposable。在這種情況下,不需要MyClass實際處理Dispose中的任何內容,因此它是空的。
我的問題是,以這種方式使用IDisposable有什麼缺點嗎?
我明白,有類似的問題已經在SO上,但我不認爲這些處理使用IDispose(或他們指的是特定的類)。
編輯:
OK,所以我想我是有點specifc,但這裏有一個更廣泛的點。使用語句是一種方便,非常簡潔的方式來定義特定時間的實例,然後您可以將其忽略。它似乎不公平,這種能力應該只限於IDisposable對象。是的,在實例化過程中有一定程度的懶惰,然後設置爲null,但是使用塊使得它非常具體地描述了實例的範圍。 爲什麼我不應該被允許使用非IDisposable類來做到這一點?
是什麼讓你覺得這更具可讀性?恕我直言,少蓬鬆的代碼是。更無用的代碼不是。 – 2011-03-10 13:54:13
我想它是我的部分VB.Net背景 - 我習慣了With塊,這意味着它更容易看到屬性被使用,而沒有前面的實例名稱的垃圾郵件阻礙。 – 2011-03-10 13:57:03