更好的代码 - .NET 引用类型与new 运算符 (C#)

下面两行代码写的有问题吗?

List<City> cities = new List<City>();
cities = GetAllCities();

有问题!第一行代码,无谓构造了一个List<City>对象,然后把它丢掉了。


犯错的原因,大概是不清楚.NET中"值类型"与"引用类型"的区别。变量cities的类型是"引用类型",内存中变量本身并不存储List<City>,而是存储了一个地址,这个地址指向了一个List<City>对象。上面代码中,第一行相当于构造了一个List<City>对象并把对象地址赋值给了cities变量。第二行代码,通过一个方法的返回值,又给变量cities赋了一个新地址,那么之前构造的那个List<City>对象就没有任何变量再指向它,那段内存空间的最终命运,只能是等待垃圾回收了。


既然第一行代码中构造的List<City>毫无必要,那么正确的写法应该如下:

List<City> cities = null;
cities = GetAllCities();

或者干脆

List<City> cities = GetAllCities();


reference 1: http://msdn.microsoft.com/en-us/library/t63sy5hs.aspx


reference 2: http://www.codeproject.com/Articles/76153/Six-important-NET-concepts-Stack-heap-value-types


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值