摧毁所有对象或让垃圾收集器完成工作更好吗?

Max*_*Max 2 .net vb.net garbage-collection memory-management

我有一个像下面这样的功能:

Public Function testFunction(ByVal input_string As String) As String

    Dim s As New StringBuilder()
    Dim c As Char
    For i As Integer = 0 To input_string.Length - 1
        c = input_string.Chars(i)
        s.Append(c)
    Next
    Return s.ToString

End Function
Run Code Online (Sandbox Code Playgroud)

但我想知道是否最好明确销毁任何对象,如下所示:

    Public Function testFunction(ByVal input_string As String) As String

    Dim s As New StringBuilder()
    Dim c As Char
    For i As Integer = 0 To input_string.Length - 1
        c = input_string.Chars(i)
        s.Append(c)
    Next

    Dim t As String = s.ToString
    s = Nothing

    Return t

End Function
Run Code Online (Sandbox Code Playgroud)

或者让垃圾收集器为我们工作?

以上两个功能都有效,但我只想知道性能的最佳实践......

谢谢

Chr*_*isF 6

设置s = Nothing毫无意义,因为它在下一条指令中超出了范围,因此无论如何都有资格进行垃圾收集.

将变量设置为null/nothing并不意味着垃圾收集在此时启动.

  • 实际上,它的用法很重要,而不是范围.在将引用设置为Nothing的语句之前,该对象不再使用. (2认同)