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

解决方案 »

  1.   

    .net 的数组其实是Aarry的子类
      

  2.   


    java里面可以用super关键字来调用父类的函数。
    ".net的数组是Array的子类",这句话我想在VS2010/VS2012里面验证一下,如何做到呢? 显然右键Go to definition不行啊。还请指教!
      

  3.   

    查msdn 关于 Array
    用reflect
    一下子就清楚了
      

  4.   


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

  5.   

    不一定是在堆上,只能说是默认在堆上,你可以指定stackalloc使之存放于栈上
    至于你的例子,后面一个就是前面一个的语法糖而已
      

  6.   

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