分享

关于string的对象引用 ,C#技术文章,C#实例教程,C#

 阿木_mv 2011-02-14
关于string的对象引用
什么都不说了, 一切都在代码里:
 

 1             string a1 = "aaa";  // 在堆中分配"aaa"
 2             string a2 = "aaa";  // 堆中已有"aaa", 则不再给"aaa"分配新空间,a2指向a1的地址
 3             string a3 = new string("aaa".ToCharArray()); // new产生新的对象,分配新的空间
 4
 5             Console.WriteLine(object.ReferenceEquals(a1, "aaa")); //Ture
 6             Console.WriteLine(object.ReferenceEquals(a1, a2));    //True
 7             Console.WriteLine(object.ReferenceEquals(a1, a3));    //False
 8
 9             string b1 = "bbb";
10
11             string c1 = "aaabbb";        // 定义"aaabbb"
12             string c2 = "aaa" + "bbb";   // "aaa"和"bbb"都是常量, 合成为"aaabbb"指向c1
13             string c3 = a1 + "bbb";      // a1是变量, 则给c3分配新的空间
14             string c4 = a1 + b1;         // 同上, c4分配新的空间
15             string c5 = a1 + b1;         // 同上, c5分配新的空间
16
17             Console.WriteLine(object.ReferenceEquals(c1, c2));  //True
18             Console.WriteLine(object.ReferenceEquals(c1, c3));  //False
19             Console.WriteLine(object.ReferenceEquals(c1, c4));  //False
20             Console.WriteLine(object.ReferenceEquals(c3, c4));  //False
21             Console.WriteLine(object.ReferenceEquals(c5, c4));  //False

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多