如果我有一個使用塊,我創建一個對象(例如FileStream對象),並且該對象無法創建(返回null,拋出異常等),塊中的代碼是否仍然執行?當c#.net using block失敗時會發生什麼?
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
// do stuff with fs here
}
// do more stuff after
如果FileStream構造函數是返回空值(如果FileStream構造函數總是返回一個有效的對象,讓我們只說爲便於討論,有可能返回NULL),將裏面的代碼執行?或者它會跳過「用fs做這些東西」的代碼嗎?
是什麼讓你覺得它仍然會執行而不是崩潰? – perilbrain 2012-08-06 16:30:26
返回null的構造函數? – ken2k 2012-08-06 16:30:31
@ ken2k:正如我所看到的,這僅僅是一個例子。說,而不是一個構造函數,它要求對象服務定位器,工廠或任何東西。實際上,編寫'using(null){}'[編譯並運行良好](http://blogs.msdn.com/b/ericlippert/archive/2011/03/03/danger-will-robinson.aspx)。 .. – Andre 2012-08-06 16:47:05