C#初学20 不可变性-字符串池

    技术2022-07-10  140

    static void Main(string[] args) { 字符串一旦被创建就不可修改,字符串具有不可变性! string x1 = "Hello Money!"; string r=x1.ToUpper(); 字符串具有不可变性,转换为大写时,要赋值给新的变量 Console.WriteLine(r); string s1 = "abc"; string s2 = "x"; s1 = s1 + s2; Console.WriteLine(s1); s2输出为abcx 与前面字符串不可变性冲突!!! 原因是:s1+s2的和创建了一个全新的内存空间,s1重新指向了全新的内存空间,放弃了原有的"abc",指向了"abcx" Console.ReadKey(); }

    static void Main(string[] args) { string a = "a"; 字符串一旦被创建就不可修改,字符串具有不可变性! string b = "b"; string c = "c"; a = a + b; a = a + c; Console.WriteLine(a); Console.ReadKey(); }

    static void Main(string[] args) { string s1 = "abc"; string a = "a"; string b = "b"; string c = "c"; string s2 = a + b + c; s1和s2不为同一对象 原因是s2新创建了一个空间,返回的是一个新值 string s3 = "a" + "b" + "c"; s1和s3为同一对象 原因是s1和s3写法是相同的,字符串池中如果已有s1的abc 则直接将abc的地址返回给s3,它们共用一个空间 }
    Processed: 0.017, SQL: 9