当您 dispose() 一个变量时,是否应该立即在调试器 Locals 窗口中将其明显设置为“Nothing”?
当我在 Visual Studio 2010 调试器中单步执行此操作时,我可以在 Locals 窗口中看到 close() 调用确实将 r1 的 BaseStream 和各种其他成员设置为 Nothing,但 dispose() 调用不会将 r1 变量设置为整体到“无”。它仍然在 Locals 窗口中列为 {System.IO.StreamReader}。
Try
r1 = New System.IO.StreamReader("c:\temp\dummy\dummy1.txt")
Finally
If Not IsNothing(r1) Then
r1.Close()
r1.Dispose()
End If
End Try
也许我的期望与它的实际工作方式不匹配。是否有明确的参考来解释这种行为?
编辑:是的,我已经知道 Using 语句,但是我需要分配两个 db 连接和两个 db 命令(每个打开的连接一个)。使用四深的语句嵌套似乎很复杂。此外,我想围绕每个 New Connection() 语句实现一个三击而你退出 while 循环,因为它们在我当前的环境中很容易失败,而我正在专门尝试解决这个问题。如果有人可以为我指出一个有用的结构来混合 While 和 Usings,他们会获得当天的金星。