所谓不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值。
在C#中,String类就是一个不可变类。这也就是为什么当我们创建一个String对象后为其再次赋值后创建的是另一个实例的原因。
下面例举一个例子。
static void Main(string[] args) { string str1 = "I‘m a student"; string str2 = str1; str2 = "I‘m a teacher"; Console.WriteLine(str2); Console.WriteLine(str1); Console.ReadKey(); }
程序运行结果是
程序中首先申明并定义了一个变量str1,之后将str1的地址赋值给str2,所以str1和str2两个变量指向同一个地址。接着改变str2的值,并没有改变str1的值,可见当改变str2的值的时候,程序又在堆里面重新创建了一个对象。
事实上String类型是不可变类。至于String类是怎样实现这种功能的,可能还要研究一下,也希望好心人能够告知。
时间: 2024-10-29 19:10:48