- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
using System;
using System.Text;
public class Test
{
public static void Main()
{
object obj = "Suck my balls";
string str1 = "Suck my balls";
string str2 = new StringBuilder().Append("Suck my ").Append("balls").ToString();
Console.WriteLine(obj==str1);//True
Console.WriteLine(str2==str1);//True
Console.WriteLine(obj==str2);//False
}
}
Т.е. получается что адрес obj и str1 указывает в ресурсы PE файла из #US "Suck my balls�", а str2 собирается из 2х указателей в #US:
1) Suck my �
2) balls�
И попадает в кучу.
Где-то ещё должен быть метод, который удаляет указатели вот на такие лишние строки в куче текущего процесса, но на память не могу вспомнить...
Или ты про gc.collect()?
https://ideone.com/oRK7jt
Есть еще string.IsInterned() - он просто извлекает ссылку если нет - возвращает null