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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int[] nunms = {};与int[] nunms= new int []{};有什么区别

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

5 个回复

倒序浏览
后者需要在堆里建立对象,而前者不需要吧

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
前者系统会在栈中分配空间,系统会自动实现内存的分配和回收。
后者系统会在堆中分配空间,系统一般不会自动实现内存的回收,如果程序中没有delete,可能会造成内存的泄露。
后者比前者灵活,它是动态分配内存的,会根据程序的需要分配,需要多少自己就决定分配多少,浪费空间少。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
就是前者比后者节省资源吗?
回复 使用道具 举报
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:34
地板
前者系统会在栈中分配空间,系统会自动实现内存的分配和回收,后者系统会在堆中分配空间,系统一般不会自动实现内存的回收。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马