初探String类型

最近一直纠结着String类型,一直想着这个问题:

代码
using System;
using System.Collections.Generic;
using System.Text;

namespace test
{
class Program
{
static void Main(string[] args)
{
string str1 = "aaa";
string str2 = str1;
str1
= "bbb";
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.ReadKey();
}
}
}

大家先看一下代码。定义了一个str1,再定义一个str2,把str1赋值给str2,为什么修改了str1之后,str2的值不会改变呢?

   一开始,我是认为str1和str2都是指向同一个引用的(事实上确实如此)。但是当我修改了str1的值为bbb之后,str2的值

竟然没有跟着改变,于是我就想,是不是他们一开始就不是指向同一个地址呢???一开始的str2=str1..是不是只是把str1的

值赋给str2指向的地址呢?

   于是我上网查了查资料,原来,str1和str2一开始时指向同一个地址单元的,但是当str1的值改变之后,str1就会指向"bbb"

的内存地址,而不再指向"aaa"的地址了,所以输出str2的时候仍然是aaa。也就是str1="bbb"的时候,是不会修改str1所指向

的内存地址的值的,只会重新分配内存单元给新的String类型,这个也就是String的特点。

原文地址:https://www.cnblogs.com/cookies9/p/1744761.html