在 VS 2015 中,当我在实现 IDisposable 的类的类定义上单击“查找所有引用”时,它会为实现 IDisposable 的每个类返回 MyBase.Finalize()
。
注意:当我在类定义本身(即 Public Class Test123
)上单击“查找所有引用”时,会发生这种情况。如果我在实现上单击“查找所有引用”(即 New Test123
),那么它只会获取使用特定 New
构造函数的实例。这也令人困惑。在 VS 2010 中,类定义本身和所有实现都分组在一个列表中,但在 2015 年则不然。
请参阅下面的屏幕截图。即使当我将鼠标悬停在类 Test123
上时,它也会突出显示 两者 MyBase.Finalize()
和 Test123
的 Test456
方法
Visual Studio 2010 不会执行此操作。这是一个错误,还是一个“新功能”?
这带来的困难是,对于当前正在工作的项目,我们为每个类手动实现IDisposable
。因此,当我在任何类上单击“查找所有引用”时,需要 10-20 秒才能找到引用,然后它会显示数千个 MyBase.Finalize()
实例(每个类一个),并且它是基本上完全没用。
Screenshot (I can't directly insert pictures with my acct yet)
Public Class Form1
Dim a As New Test123
Dim b As New Test456
End Class
Public Class Test123
Implements IDisposable
Dim A As Double = 0
'Dispose Implementation
Dim mbDisposed As Boolean = False
Public Overloads Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Private Overloads Sub Dispose(ByVal lbDisposing As Boolean)
If Not mbDisposed Then
If lbDisposing Then
'Dispose of all nullable objects
End If
End If
mbDisposed = True
End Sub
Protected Overrides Sub Finalize()
Dispose(False)
MyBase.Finalize()
End Sub
End Class
Public Class Test456
Implements IDisposable
Dim B As Double = 1
'Dispose Implementation
Dim mbDisposed As Boolean = False
Public Overloads Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Private Overloads Sub Dispose(ByVal lbDisposing As Boolean)
If Not mbDisposed Then
If lbDisposing Then
'Dispose of all nullable objects
End If
End If
mbDisposed = True
End Sub
Protected Overrides Sub Finalize()
Dispose(False)
MyBase.Finalize()
End Sub
End Class
最佳答案
关于vb.net - 在 VS 2015 VB.NET 中实现 IDisposable 的类上的“查找所有引用”不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38730192/