销毁所有对象更好还是让垃圾收集器来完成这项工作?

2024-01-11

我有一个如下所示的函数:

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

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

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

谢谢


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

销毁所有对象更好还是让垃圾收集器来完成这项工作? 的相关文章

  • 为什么当要求修剪“PRN.NUL”时,TrimStart 会更多地修剪字符?

    这是代码 namespace TrimTest class Program static void Main string args string ToTrim PRN NUL Console WriteLine ToTrim string
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 某些笔记本电脑中的 VB.net Forms UI 显示问题

    我是 VB 应用程序的新手 无法弄清楚我的应用程序出了什么问题 有一个带有几个标签和文本字段的表单 当我在我和其他人的机器上运行该应用程序时 它显示良好 并具有正确的对齐和字体 然而 对于某些人来说 应用程序表单 UI 是破碎的 未对齐的文
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • NodeJS:调用 global.gc() 不会将内存减少到最低限度?

    为了调查内存泄漏 我设置了一条触发的路线global gc 在每个POST gc app post gc function req res global gc 但是 我注意到 如果我发送垃圾邮件此请求 每次都会越来越多地减少内存使用量 不应
  • 家庭自动化图书馆[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是一名 C 开发人员 希望将家庭自动化作为一种 爱好 我做了一些研究 但想知道是否有人知道支持 In
  • 比较已编译的 .NET 程序集?

    有没有什么好的程序可以与编译 NET 程序集进行比较 例如 我有 HelloWorld dll 1 0 0 0 和 HelloWorld dll 2 0 0 0 我想比较差异 我该怎么做 我知道我可以使用 NET Reflector 并使用
  • 如何有效确保小数值至少有 N 位小数

    我想在进行算术运算之前有效地确保十进制值至少有 N 个位置 在下面的示例中 3 显然我可以格式化 0 000 然后解析 但它的效率相对较低 我正在寻找一种避免与字符串转换的解决方案 我尝试过以下解决方案 decimal d 1 23M d
  • C# 和匿名对象数组

    这样的表达是什么意思呢 obj DataSource new new Text Silverlight Count 10 Link Tags Silverlight new Text IIS 7 Count 11 Link http iis
  • 由于索引无效,无法加载计数器名称数据 -Exception

    我使用 C 和 WPF 操作系统是 windows 7 Professional 和 Visual Studio 2012 SQL Server 2012 我在wpf中使用了Devexpress Grid 我想使用 ADO Net 服务器模
  • WPF:Prism 对于小型应用程序来说是不是太过分了?

    如果我不将我的应用程序分成不同的模块 否则我会认为 Prism 确实是可行的方法 我应该使用 Prism 吗 我知道 Prism 提供了一个方便的实现ICommand 我可以自己在一页代码中完成 并为我们提供IEventAggregator
  • 如何计算最低系统要求?

    对于我用 Visual C 编写的应用程序 Testing 不 真的 这就是全部
  • 是否可以在 IIS7 Express 中使用自定义主机标头/绑定?

    我正在尝试配置一个新的ASP NET MVC3 using IIS7快递 在我的本地开发机器上 使用自定义域名 eg 我的本地开发机器 打开我的网络浏览器 goto http dev www mydomain com http dev ww
  • 循环访问 VB.NET 中的控件

    我正在创建一个国际象棋程序 它由六十四个黑白背景颜色交替的图框组成 我已经给它们命名了pba1 pba2 pbb1 pbb2 pbc1等等 现在 我只想循环遍历黑色的 例如 我只想循环遍历pba1 pbb2 pbc3等 如何在 VB NET
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • UDP SocketException - 通常只允许每个套接字地址使用一次

    尽管这里有很多非常相似的问题 但提供的答案都没有帮助我 这让我很难过 我有一个非常大的管理系统 我的任务是为其编写一些 UDP 数据包发送 接收 我已经编写了一个原型 一切都很好 所以我开始将我的代码合并到所述系统中 然而 我现在弹出了一个
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐