[英]Simpler syntax for IDisposable than using block?
我寫了這段代碼
var doc = new StreamReader(stream).ReadToEnd();
但是后來我記得一個人應該使用C#的using塊來確保StreamReader的清理方法Dispose盡快被調用。 這給了我這個代碼
string doc;
using (var reader = new StreamReader(stream))
{
doc = reader.ReadToEnd();
}
那更長,更難讀。 有沒有一種更簡單的單行語法仍然可以正確地使用IDisposable的東西?
塊內只有一行,您可以簡單地編寫
using (var reader = new StreamReader(stream))
doc = reader.ReadToEnd();
但是,沒有辦法進一步簡化它。 using
只是一些語法糖,例如:
var reader = new StreamReader(stream);
try
{
doc = reader.ReadToEnd();
}
finally
{
reader.Dispose();
}
而且,這甚至還不能阻止您在對象被處置后訪問它。 因此, using
實際上是完成工作的捷徑。
關於using
-statement組合的一個注釋:如果使用FileStream
和StreamReader
/ StreamWriter
,則可以簡單地將許多using
-statement組合為一個:
using (var stream = new FileStream(@"C:\Test.txt", FileMode.Open, FileAccess.Read))
using (var reader = new StreamReader(stream))
{
doc = reader.ReadToEnd();
}
您可以像這樣手動調用dispose方法:
var reader= new StreamReader(stream);
try
{
var doc = reader.ReadToEnd();
}
finally
{
reader.Dispose();
}
實際上,這等效於using語法。 但是使用仍然是編寫它的最短方法。
3號操作通常需要3行。
您有兩種選擇:
Dispose()
。 using
..像預期的那樣:) 如果多余的行是您擔心的..您擔心的是錯誤的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.