Ich verwende eine Erweiterungsmethode für Zeichenfolge Klasse. Innerhalb dieser Erweiterungsmethode erstelle ich eine Instanz von StringBuilder. HierStatische Methode, die Objektinstanzen enthält, ist das falsch?
ist der Code:
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();
}
Es funktioniert, aber ich habe eine Sorge in Bezug auf die Speicherverwaltung. Statische Methoden werden nicht instanziiert, also was geschieht, wenn ich ein Objekt innerhalb der statischen Methode instanziiere. Nehmen wir an, ich würde diese statische Methode 100 Mal aufrufen, wären 100 Kopien von StringBuilder-Instanzen im Speicher?
Würde es Speicherleck verursachen? Stellt Garbage Collector Objektinstanzen bei der Ausführung der statischen Methode zur Verfügung?
'Statische Methoden werden nicht instanziiert' Nicht statische Methoden werden ebenfalls nicht instanziiert. Klasseninstanzen enthalten nur Daten. Methoden werden nur aufgerufen (nicht instanziiert). Der Unterschied besteht darin, dass nicht statische Methoden mit Klasseninstanz und statische Methoden ohne Klasseninstanz aufgerufen werden. –