Sto utilizzando un metodo di estensione per la classe . All'interno di tale metodo di estensione creo un'istanza di StringBuilder.Metodo statico contenente istanze di oggetto, è sbagliato?
Ecco il codice:
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();
}
Funziona ma ho una preoccupazione per quanto riguarda la gestione della memoria. I metodi statici non vengono istanziati, quindi cosa succede se istanzio un oggetto nel metodo statico. Diciamo che chiamo questo metodo statico 100 volte, ci sarebbero 100 copie di istanze di StringBuilder in memoria?
Potrebbe causare una perdita di memoria? Garbage Collector elimina l'istanza dell'oggetto quando viene interrotta l'esecuzione del metodo statico?
'I metodi statici non vengono istanziati. Anche i metodi non statici non vengono istanziati. Le istanze di classe contengono solo dati. I metodi sono appena chiamati (non istanziati). La differenza è che i metodi non statici vengono chiamati con istanza di classe e metodi statici senza istanza di classe. –