A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何圣东 黑马帝   /  2012-1-30 00:37  /  2008 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚看苏坤老师的视频,讲到字符串不可变:
string s ="abc";
s="888888";
苏坤老师说"abc"在内存中并没有消失,那么我想问"abc"在内存中依然存在的意义是什么?
我感觉"abc"在内存中存在没有意义,而且还占内存。

评分

参与人数 1技术分 +2 收起 理由
官方工作人员 + 2 赞一个!

查看全部评分

2 个回复

正序浏览
在.NET中String是不可改变对象,一旦创建了一个String对象并为它赋值,它就不可能再改,当你声明一个字符串变量赋值时,.NET会检查string内置池中是否有这个字符串,若有则直接返回地址,没有则会在内置池中创建。也就是说,当我们创建了字符串对象a,它的值是“hello”,当我们再创建一个值为“hello”的字符串对象b时,.NET不会再去分配一块内存空间,而是直接指向了a在内存中的地址。这样可以确保内存的有效利用
回复 使用道具 举报
如果单独讲 abc意义的话 那只能根据编程人员的定义不同吧。

string s ="abc";
s="888888";

这里主要是讲解 string类型内存的问题,s所指向的地址值变了,但是对象没变。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马