.net - 销毁所有对象还是让垃圾收集器完成工作更好?

标签 .net vb.net memory-management garbage-collection

我有一个类似下面的函数:

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

但我想知道显式销毁任何对象是否更好,如下所示:

    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

还是让垃圾收集器为我们完成这项工作?

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

谢谢

最佳答案

设置 s = Nothing 是没有意义的,因为它在下一条指令处超出了范围,因此无论如何都可以在该点进行垃圾回收。

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

关于.net - 销毁所有对象还是让垃圾收集器完成工作更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4354469/

相关文章:

.net - 在哪里对实体运行重复检查

c# - 有没有一种简单的方法可以将一个 IList<MyType> 附加到另一个?

mysql - 如何在局域网服务器上找到mysql数据库...?

sql - 无法将 vb.net 项目与 Access 号进行比较

c# - 锁字典不断增长,不知如何清理?

ios - 在 iOS 上一个接一个地保存大图像内存释放

C分配指针?这是什么?

c# - 如何使 CollectionEditor 在添加或删除项目时触发 CollectionChanged 事件?

c# - Slapper & Dapper 词典支持

.net - DialogResult.OK 按钮上的“退出子”