Po krótkim wyglądzie za pomocą Reflektora, wygląda na to, że String.Substring()
przydziela pamięć dla każdego podłańcucha. Czy mam rację, że tak właśnie jest? Myślałem, że to nie będzie konieczne, ponieważ struny są niezmienne.Dlaczego .NET tworzy nowe podłańcuchy, zamiast wskazywać istniejące łańcuchy?
Moim podstawowym celem było stworzenie metody rozszerzenia IEnumerable<string> Split(this String, Char)
, która nie przydzieli dodatkowej pamięci.
Nie myślałem o tym bardzo ciężko, lub spojrzałem na implementację StringBuildera z Reflectorem, ale czy działałaby metoda IEnumerable Split (ta metoda StringBuilder, Char)? –
Domenic
Jeśli ciąg.Podłańcuch() nie przydziela nowej pamięci, ciąg znaków nie będzie niezmienny –