string对象的可变实现

#string对象的一个重要性质是不可变性;但在不安全代码环境下也是可以实现可变的

见代码 

    class Program
    {
        unsafe static void Main(string[] args)
        {

            Console.WriteLine("测试开始:");
            string s1 = "hello";
            string s2 = string.Copy(s1);//复制对象本身,新建对象,深拷贝
            string s3 = s1.Clone().ToString(); //复制地址,克隆(浅拷贝)
            fixed (char* p = s1)
            {
                p[0] = 'a';
            }
            Console.WriteLine($"s1={s1}");
            Console.WriteLine($"s2={s2}");
            Console.WriteLine($"s3={s3}");
            Console.WriteLine(object.ReferenceEquals(s1, s2));
            Console.WriteLine(object.ReferenceEquals(s1, s3));

            Console.ReadKey();

        }
    }

 

posted @ 2019-05-10 10:16  梦行者123  阅读(148)  评论(0编辑  收藏  举报