导读:
关于字符串的驻留的机制,对于那些了解它的人肯定会认为很简单,但是我相信会有很大一部分人对它存在迷惑。在开始关于字符串的驻留之前,先给出一个有趣的Sample:
中国_网管联盟bitsCN.com
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));
中国_网管联盟bitsCN.com
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)));
}
本文转自
http://www.bitscn.com/dotnet/framework/200709/109653.html
关于字符串的驻留的机制,对于那些了解它的人肯定会认为很简单,但是我相信会有很大一部分人对它存在迷惑。在开始关于字符串的驻留之前,先给出一个有趣的Sample:
中国_网管联盟bitsCN.com
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));
中国_网管联盟bitsCN.com
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)));
}

本文转自
http://www.bitscn.com/dotnet/framework/200709/109653.html