我正在使用Visual Studio 2012並具有以下代碼塊。代碼檢查特定文件的文件類型(這就是爲什麼返回True/False)。如果遇到錯誤,它也會返回false。我得到的警告是我在初始化之前使用了fs/br變量,這是真的。這就是爲什麼我有IsNothing語句,但是我在IsNothing語句中得到了警告,我不知道如何避免這種情況,因爲我不想將語句fs = New FileStream(fn, FileMode.Open)
和br = ...
置於Try/Catch塊之外。在IsNothing()語句中避免調試器警告
該代碼本身的作品,所以警告不是一個真正的問題,但它仍然困擾我有他們。有沒有人看到一個解決方案如何可以改變這個塊提供相同的安全性沒有警告?
歡迎使用VB.NET或C#答案。
Dim fs As FileStream
Dim br As BinaryReader
Try
fs = New FileStream(fn, FileMode.Open) 'Open the file
br = New BinaryReader(fs) 'Initilize the reader
'File reading code omitted here
br.Close() 'Close the reader and underlying stream
Catch
If Not IsNothing(fs) Then fs.Close() 'Warning here
If Not IsNothing(br) Then br.Close() 'and here
Return False
End Try
不是調試器,它是編譯器發出警告。它不夠聰明,無法理解IsNothing()方法實際上是爲了處理未初始化的對象而編寫的。不要像這樣編寫代碼,而是使用* Using *語句。 –
謝謝Hans,我解釋了我的(錯誤的)圖案,因爲在評論中沒有使用Using語句來接受答案,但我現在將更改我的代碼。 – Jens