.NET总结(常见误区)

内存分配模式

主要分为两种,栈和堆。
黄金定律:引用类型一定分配在堆上,值类型的局部变量存储在栈上,而类的值类型成员存储在堆上。

思考一

int a=10;
int b=a;
b=20;
a=?;

很显然,执行完这段代码后a的值并没有被改变,a的值还是10.
示例图

思考二

class Person
{
	public string Name {get;set;}
	public int Age{get;set;}
}
Person p=new Person();
p.Name="张三";
p.Age=20;

Person p1=p;
p1.Name="李四";
p1.Age=21;

Console.WriteLine(p.Name);
Console.WriteLine(p.Age);
Console.ReadLine();

这回的输出结果变为了李四21示例图
由于Person p1在栈内直接获取了Person p的堆地址,而不是数据,所以在修改Person p1内的数据时,便会根据地址修改堆内的相应数据,从而修改了Person p的数据,所以输出结果会变为变为李四与21。

未将对象引用到实例示例图

当栈内A地址为NULL时,便会引发未将对象引用到实例的错误。

垃圾回收

值类型(int,double,bool等)占用的空间在方法执行结束会被马上释放,引用类型(string,数组,class等)占用的空间在方法执行结束后不会被马上释放,具体什么时间释放由垃圾回收器(GC)来决定。


欢迎访问我的个人博客: www.linjiaxiaozhang.com

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值