回答
http://msdn.microsoft.com/en-us/library/yh598w02.aspx
using語句確保被處置,即使當你調用對象的方法發生異常調用。將對象放在try塊中,然後在finally塊中調用Dispose,可以獲得相同的結果;實際上,這是編譯器如何翻譯using語句。
不,不需要。我們的網絡服務專家只是爲了確保您關注。
對於disposable pattern,它是syntactic sugar。編譯時,它會擴展到生成的IL代碼中的完整模式。
在()
中初始化的對象將在Dispose
超出範圍時調用它。這就是爲什麼只有實現IDisposable
的類才能使用它。
查看MSDN article關於它。
要回答你的問題,這裏有一些例子來說明using
語句更常見的用法,以確保在其他的答案中引用的處理「是什麼using語句呢?」:
確保的StringWriter和XmlTextWriter的設置(關閉),當我們使用完:
using (StringWriter sw = new StringWriter(sb))
using (XmlTextWriter xw = new XmlTextWriter(sw))
{
WebPartManager1.ExportWebPart(partToExport, xw);
}
確保了數據庫連接和命令對象設置:
DataTable dt = new DataTable();
using (SqlConnection connection = new SqlConnection("ConnectionString"))
using (SqlCommand command = new SqlCommand())
{
command.Connection = connection;
command.CommandText = "SELECT * FROM Customers";
connection.Open();
using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(reader);
}
}
-1:請修復上面的SqlCommand對象,並請使用XmlWriter.Create而不是XmlTextReader。 –
@John Saunders:我不會將這些作爲他們特定用法的「最佳實踐」,只是作爲「使用」語句的常見應用程序的示例。你能用我的SqlCommand來詳細說明你的問題嗎?喜歡,哪一個? – DOK
@DOK:將複製和粘貼示例。 **總是**在示例中正確使用IDisposable,否則那些複製「只是一個示例」的代碼將會有錯誤代碼。修復任何不在使用塊中的SqlCommand!這和其他所有實現IDisposable的方法(可能的DataTable除外)。 –
- 1. 調用Web服務的Web服務
- 2. 調用Web服務
- 3. 調用Web服務
- 4. 調用Web服務
- 5. 調用Web服務
- 6. 調用Web服務
- 7. 如何使用asp.net web服務調用oracle web服務
- 8. Web API調用Web服務
- 9. 用flume調用web服務
- 10. 使用JQuery調用JSON Web服務
- 11. 使用javascript調用java web服務
- 12. 如何使用HttpWebRequest調用Web服務
- 13. 使用jquery調用SAP Web服務ajax
- 14. 使用jQuery調用Restful Web服務ajax
- 15. 如何使用GET調用Web服務?
- 16. 使用wget調用Web服務
- 17. 使用jquery調用web服務
- 18. 使用JSON從jQuery調用Web服務
- 19. 使用$ .get調用Web服務.asmx jquery
- 20. 使用rhomobile調用web服務
- 21. 使用Java調用Web服務
- 22. 使用ReportRawData調用BI Publisher Web服務
- 23. 使用SOAP的Java Web服務調用
- 24. 使用ASIHttprequest XCode4.2調用WCF Web服務
- 25. 使用ajax調用WCF Web服務
- 26. 使用nodejs調用Web服務
- 27. 使用java調用soap web服務
- 28. 使用TaskFactory.FromAsync調用SOAP Web服務
- 29. 使用Soapclient調用soap web服務
- 30. 如何使用KSOAP調用Web服務?
您應該準確地解釋爲什麼它不是必需的 - 即並非所有程序都需要在100%的時間內完美運行,並且如果您的業務需求指定了緩慢的資源泄漏,那麼忽略它就是完成此任務的票據。 –
@Jesse:非常好的一點。另一個省略它的原因是,如果你想要像「數據庫已經打開」這樣的隨機錯誤,由於你上次沒有處理它。 –