Skip to content

Instantly share code, notes, and snippets.

@Liminiens
Created April 19, 2018 08:41
Show Gist options
  • Save Liminiens/b9bfcfdf48311623e1a506f813e07f8d to your computer and use it in GitHub Desktop.
Save Liminiens/b9bfcfdf48311623e1a506f813e07f8d to your computer and use it in GitHub Desktop.
var temp = new StringBuilder().Append("inter").Append("ned");
string internedString1 = temp.ToString();
string internedString2 = temp.ToString();
Console.WriteLine($"Interned? {nameof(internedString1)}: {String.IsInterned(internedString1) != null}");
Console.WriteLine($"Interned?: {nameof(internedString2)} {String.IsInterned(internedString2) != null}");
String.Intern(internedString1);
Console.WriteLine($"Interned? {nameof(internedString1)}: {String.IsInterned(internedString1) != null}");
Console.WriteLine($"Interned?: {nameof(internedString2)} {String.IsInterned(internedString2) != null}");
string fromMetadata1 = String.IsInterned(internedString1);
string fromMetadata2 = String.IsInterned(internedString2);
Console.WriteLine($"Point to same string?: {ReferenceEquals(fromMetadata1, fromMetadata2)}");
fixed (char* p = fromMetadata1)
{
//gore
p[0] = 'k';
}
Console.WriteLine($"Interned? {nameof(internedString1)}: {String.IsInterned(internedString1) != null}");
Console.WriteLine($"Interned?: {nameof(internedString2)} {String.IsInterned(internedString2) != null}");
Console.ReadKey();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment