黑马程序员技术交流社区

标题: int[] nunms = {};与int[] nunms= new int []{};有什么区别 [打印本页]

作者: xiaqingchao    时间: 2012-11-27 16:34
标题: int[] nunms = {};与int[] nunms= new int []{};有什么区别
int[] nunms = {};与int[] nunms= new int []{};有什么区别
作者: 齐银春    时间: 2012-11-27 16:44
后者需要在堆里建立对象,而前者不需要吧
作者: songFeng4985    时间: 2012-11-27 16:53
前者系统会在栈中分配空间,系统会自动实现内存的分配和回收。
后者系统会在堆中分配空间,系统一般不会自动实现内存的回收,如果程序中没有delete,可能会造成内存的泄露。
后者比前者灵活,它是动态分配内存的,会根据程序的需要分配,需要多少自己就决定分配多少,浪费空间少。
作者: xiaqingchao    时间: 2012-11-27 17:18
就是前者比后者节省资源吗?
作者: 黑马-张扬    时间: 2012-11-27 21:31
songFeng4985 发表于 2012-11-27 16:53
前者系统会在栈中分配空间,系统会自动实现内存的分配和回收。
后者系统会在堆中分配空间,系统一般不会自 ...

你说的这个是c++中的概念吧。c#中的关键字没有delete的。具体可参见MSDN给出的表格http://msdn.microsoft.com/zh-cn/library/x53a06bb.aspx
在c#中分类型分为引用类型与值类型
而数组在c#中是引用类型的。引用类型在运行时,当您声明引用类型的变量时,该变量会一直包含值 null,直至您使用 new 运算符显式创建对象的实例,或者为该变量分配已经使用new 在其他位置创建的对象。然后系统会再托管堆上分配内存。
所以数组的各种初始化方法其实都是一样的。只不过.net帮我们隐去了一些东西而已吧。
作者: 王彦伟    时间: 2012-12-10 19:38
前者系统会在栈中分配空间,系统会自动实现内存的分配和回收,后者系统会在堆中分配空间,系统一般不会自动实现内存的回收。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2