首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#的数组一定是宣言在堆上面吗? 哪怕用初始化列表构造的也是

2013-09-05 
C#的数组一定是声明在堆上面吗? 哪怕用初始化列表构造的也是?int ai[]new int{1,2,3}这个ai是在堆上面存

C#的数组一定是声明在堆上面吗? 哪怕用初始化列表构造的也是?
int ai[]=new int{1,2,3}这个ai是在堆上面存在的,是吧。

然后如果是不用new直接int bi[]={1,2,3}也能编译运行。请问这个bi是存在于当前的调用栈上面(值类型)还是仍然被编译成了new的形式存在于堆上,是一个有引用计数的对象?

[解决办法]
.net 的数组其实是Aarry的子类
[解决办法]
查msdn 关于 Array
用reflect
一下子就清楚了
[解决办法]


            int[] bi ={1,2,3};
            if (bi is Array)
            {
                string typename = bi.ToString();
            }

[解决办法]
两种 形式本质是一样的.
都在堆上.
[解决办法]
不一定是在堆上,只能说是默认在堆上,你可以指定stackalloc使之存放于栈上
至于你的例子,后面一个就是前面一个的语法糖而已
[解决办法]
引用:
不一定是在堆上,只能说是默认在堆上,你可以指定stackalloc使之存放于栈上
至于你的例子,后面一个就是前面一个的语法糖而已

stackalloc出来的不是.net的数组,它类似于c中一段内存

热点排行