我知道这已经讨论过很多次,但似乎没有解决方案有效,所以我认为并且可能值得尝试重新打开它,因为已经过了一段时间。
我有一个功能:
Public Function Test() As Object
Dim retVal As DisposableObject
Dim tempRetVal As DisposableObject
Try
tempRetVal = New DisposableObject
retVal = tempRetVal
tempRetVal = Nothing
Return retVal
Catch
tempRetVal.Dispose()
Throw
Finally
tempRetVal.Dispose()
End Try
End Function
如您所见,有很多 Dispose 语句。这是因为我试图找到一种让它工作的方法。我发现的唯一方法(显然不是解决方案)是retVal.Dispose()
在返回 retval 之前添加。
Public Function Test() As Object
Dim retVal As DisposableObject
Dim tempRetVal As DisposableObject
Try
tempRetVal = New DisposableObject
retVal = tempRetVal
tempRetVal = Nothing
retVal.Dispose()
Return retVal
Catch
tempRetVal.Dispose()
Throw
Finally
tempRetVal.Dispose()
End Try
End Function
任何提示将不胜感激!:)
注意:我使用的是 VS2012
编辑: 我也尝试了 MS 提出的简单模板,但它也不起作用:
Public Function Test() As Object
Dim retVal As DisposableObject
Dim tempRetVal As DisposableObject
Try
tempRetVal = New DisposableObject
retVal = tempRetVal
tempRetVal = Nothing
Return retVal
Finally
if tempRetVal isnot Nothing then tempRetVal.Dispose()
End Try
End Function
CA2000 被抛出tempRetVal = New DisposableObject
。