[正文]数据类型-引用类型

类,数组,泛型,String字符串都是引用类型。



引用类型说明例子:



在一个作用域中定义一个string
{//1
string str="123456";//2
}//3


代码运行到在1时,CLR会知道在这个作用域中要的内存空间是多少,在内存中开辟出来了一个线程栈。
代码运行到在2时,可理解为这句话分成了两步:

string str;str="123456";

1,string str;在栈中有了str这个变量,但并没有值。同时也没有对托管堆分配空间。

2,str="123456";先在托管堆中放进"123456"这个字符串,同时分配了在托管堆中的地址NN1,再把NN1放进栈中,这样栈中才存在了值。

代码运行到在3时,作用域结束,然后在代码里,从下到上依次释放作用域中的变量(即清空str变量在栈中的值)。
这时,str变量在栈中就不存在了,但"123456"这个值还是在托管堆中的。



String的说明:


1,字符串的 不可变性


string str="123456";声明了一个变量字符串str,就等于在托管堆中创建了一个"123456"的值


str="555";之后有重新给str赋了另外的值,等于有在托管堆中创建了一个"555"的值,并把地址指向了str,


不可变性就是,不会去修改"123456"的值,而是会新建一个新的值"555"。之后使用时就等于用新的值了。



作者:FengYang

博客地址:http://blog.csdn.net/qq_28140365

版权声明:如果感觉文章哪里写的不对或者存在疑问,欢迎留言,共同学习、进步!

蓝色字体为链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值