• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

清风&咖啡

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

不可变类

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

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

 

posted on 2015-08-09 22:47  尼普顿  阅读(191)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3