Я использую метод расширения для строка класс. В рамках этого метода расширения я создаю экземпляр 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?
Может ли это вызвать утечку памяти? Собирает ли сборщик мусора экземпляр объекта при завершении статического метода?
'Статические методы не получают экземпляр 'Нестатические методы также не создаются. Экземпляры класса содержат только данные. Методы называются (не создаются). Разница заключается в том, что нестатические методы вызывают с экземпляром класса и статические методы без экземпляра класса. –