代码之家  ›  专栏  ›  技术社区  ›  Clément

如何处理TextBuilder?

  •  1
  • Clément  · 技术社区  · 14 年前

    StringBuilder ,而不是显而易见的 MyBuilder = New StringBuilder MyBuilder.Remove(0, Length)

    谢谢!

    6 回复  |  直到 14 年前
        1
  •  1
  •   Hans Passant    14 年前

    你说得对,使用Remove()方法只是重置一个内部索引,它对内部数组没有任何作用。不显式管理内存是.NETFramework的一个关键属性,垃圾收集器会自动对其进行排序。

    从技术上讲,可以调用GC.Collect()。然而,这几乎总是一个非常糟糕的主意。是的,您将使StringBuilder实例及其内部数组消失,前提是没有对它的引用。但它也会过早地提升程序中的其他对象。这意味着它们将停留在超过必要的时间,你的程序将最终使用 更多 记忆。

        2
  •  3
  •   Darin Dimitrov    14 年前

    最好的方法是让它落在范围之外,GC将处理内存。

        3
  •  1
  •   Razvi    14 年前

    您可以让它超出范围,或者删除(0,Length),然后将Capacity设置为0(我认为如果将Capacity设置为0,则会释放额外的内存,但我不完全确定)。

        4
  •  1
  •   Sonny Boy    14 年前

    你可以随时使用 MyBuilder = Nothing 但我通常只是让它们不在我的范围之内。

        5
  •  0
  •   Dan Tao    14 年前

    任何 NET中的对象是让GC处理它。

    StringBuilder Nothing *顺其自然吧。

    我想您可能对在.NET中“处置”对象的含义感到困惑。会议的目的 IDisposable 接口提供一种机制,通过该机制,对象可以释放对某些共享资源(例如,文件流)的访问。打电话 Dispose 与释放内存不同。自从 字符串拼接 不访问任何共享资源,它不需要实现 可识别的 .

    必须 GC.Collect 是给你的。但老实说,我 从未

    *我假设它是一个类级变量。如果它只是一个局部变量,就不需要设置为 没有什么