Dmi*_*ruk 5 c# string string-interning
考虑以下C#代码:
var a = "123";
var b = 123.ToString();
Console.WriteLine(a==b);
Console.WriteLine(ReferenceEquals(a, b));
Console.WriteLine("a interned? " + string.IsInterned(a));
Console.WriteLine("b interned? " + string.IsInterned(b));
Console.WriteLine(
ReferenceEquals(
string.IsInterned(a),
string.IsInterned(b)
)
);
Run Code Online (Sandbox Code Playgroud)
这个输出
True
False
a interned? 123
b interned? 123
True
Run Code Online (Sandbox Code Playgroud)
这个一切都使得除为什么感觉ReferenceEquals(a,b)返回false考虑a得到了实习,然后b会提到a,由指示string.IsInterned检查。