技术开发 频道

Net Framework: 字符串的驻留(String Interning)


【IT168技术文档】

  关于字符串的驻留的机制,对于那些了解它的人肯定会认为很简单,但是我相信会有很大一部分人对它存在迷惑。在开始关于字符串的驻留之前,先给出一个有趣的Sample:

  Code Snip:
static void Main(string[] args) { string str1 = "ABCD1234"; string str2 = "ABCD1234"; string str3 = "ABCD"; string str4 = "1234"; string str5 = "ABCD" + "1234"; string str6 = "ABCD" + str4; string str7 = str3 + str4; Console.WriteLine("string str1 = \"ABCD1234\";"); Console.WriteLine("string str2 = \"ABCD1234\";"); Console.WriteLine("string str3 = \"ABCD\";"); Console.WriteLine("string str4 = \"1234\";"); Console.WriteLine("string str5 = \"ABCD\" + \"1234\";"); Console.WriteLine("string str6 = \"ABCD\" + str4;"); Console.WriteLine("string str7 = str3 + str4;"); Console.WriteLine("\nobject.ReferenceEquals(str1, str2) = {0}", object.ReferenceEquals(str1, str2)); Console.WriteLine("object.ReferenceEquals(str1, \"ABCD1234\") = {0}", object.ReferenceEquals(str1, "ABCD1234")); Console.WriteLine("\nobject.ReferenceEquals(str1, str5) = {0}", object.ReferenceEquals(str1, str5)); Console.WriteLine("object.ReferenceEquals(str1, str6) = {0}", object.ReferenceEquals(str1, str6)); Console.WriteLine("object.ReferenceEquals(str1, str7) = {0}", object.ReferenceEquals(str1, str7)); Console.WriteLine("\nobject.ReferenceEquals(str1, string.Intern(str6)) = {0}", object.ReferenceEquals(str1, string.Intern(str6))); Console.WriteLine("object.ReferenceEquals(str1, string.Intern(str7)) = {0}", object.ReferenceEquals(str1, string.Intern(str7))); }
  下边是输出的结果:
0
相关文章