gpt4 book ai didi

c# - 包含对象实例的静态方法,错了吗?

转载 作者:太空狗 更新时间:2023-10-29 17:34:07 25 4
gpt4 key购买 nike

我正在为 string 类使用扩展方法。在该扩展方法中,我创建了一个 StringBuilder 实例。

代码如下:

    public static string GetPlainTextFromHtml(this string htmlString)
{
StringBuilder sb = new StringBuilder();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlString);

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//text()"))
{
string text = node.InnerText;
if (!string.IsNullOrEmpty(text))
sb.Append(text.Trim());
}

return sb.ToString();
}

它可以工作,但我担心内存管理。静态方法不会被实例化,所以如果我在静态方法中实例化一个对象会发生什么。假设我调用这个静态方法 100 次,内存中是否会有 100 个 StringBuilder 实例的副本?

会不会造成内存泄漏?当静态方法执行终止时,垃圾收集器是否处理对象实例?

最佳答案

您的代码绝对没有问题。

在静态方法中创建实例的方式与在实例方法中创建实例的方式相同。每次调用都会生成一个新实例,但会超出范围并在方法调用结束时准备好进行垃圾回收。

我也没有看到任何实现 IDisposable 的东西,所以你也不必担心在那里清理自己。

关于c# - 包含对象实例的静态方法,错了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26656053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com