VB.NET,是否应该将通用声明为空?

瓦莱里亚尼

处理自己的类的处置时,例如:

 Protected Overridable Sub Dispose(disposing As Boolean)
        If Disposed = False Then
            If disposing Then
                ...
            End If
...
        End If
    End Sub

    Public Sub Dispose() Implements IDisposable.Dispose
        ' Do not change this code.  Put cleanup code in Dispose(ByVal disposing As Boolean) above.
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub

    Protected Overrides Sub Finalize()
        Dispose(False)
    End Sub

由于我们抑制了finalize,因此我是否还应该在Dispose中将通用值(例如字符串,整数)设置为空值(例如,对于字符串,则为IE vbnullstring)?通常,我可以使用它来处理计时器,但是我应该在这里抑制定型,还是在超出范围后仍将其删除。

谢谢!

金西尼

重要的是要了解配置终结器的实际作用。处置允许您显式释放对象所拥有的非托管资源,还可以处置托管对象以允许它们执行相同的操作。在释放对象占用的内存之前,需要释放这些资源。如果您明确地放置对象,则垃圾收集器可以在第一遍回收对象的内存。如果您不处理,GC必须在第一遍完成,并且在第二遍之前不能回收内存,从而使垃圾收集效率降低。

如果您Nothing在处置对象时未将其字段设置为,那么这也会减慢回收内存的速度。在大多数情况下,这没什么大不了的。但是,如果您的字段引用的对象本身占用大量内存,那么问题就更大了。这就是由IDE自动添加的注释指定要清除该Dispose方法中可能引用大型对象的字段的原因请记住,将变量设置为Nothing在许多情况下可能无济于事,但是,只要您完成了该变量,它肯定不会受到伤害。如有疑问,请使您的字段为空。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章