码迷,mamicode.com
首页 > 其他好文 > 详细

不可变类

时间:2015-08-10 00:01:19      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:

所谓不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值。

在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类是怎样实现这种功能的,可能还要研究一下,也希望好心人能够告知。

 

不可变类

标签:

原文地址:http://www.cnblogs.com/StandBycoffee/p/4716639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!