在C#中,我们是这样声明数组和初始化数组的int[] array = new int[2]{1,2};而真正的数组实际上是编译器创建了一个派生于基类Array的类,暂且称之为IntArray,那么在IntArray类中存储数据的真正数据结构是什么呢?
求解答!!!

解决方案 »

  1.   

    IL_0002:  newarr     [mscorlib]System.Int32
      

  2.   

    数组类型是从抽象基类型 Array 派生的引用类型。
    数组在托管堆中存储实际值,在堆栈中存储它的应用
      

  3.   

    1楼和2楼说的都很对,元素类型是Int32没错,数组是引用类型也明白
    但并不是我想问的,例如说int temp = array[0];这是通过IntArray中的索引器实现的,那么数组中所有的元素在IntArray中到底是存储在什么数据结构中的?
      

  4.   

    假如说现在要你实现IntArray中的索引器,如何?
      

  5.   

    .net 有很多特殊的类型声明,Array,delegate都是。
    int[]是继承自Array的一个子类。不过这个类型是否是编译时存在的就不知道了。
    typeof(int[]).Name显示是Int32[]
    但在反编译时,找不到Int32[]类型的。只有Int32,Array。那可能这是动态的一个类型把。
    既然是Array的子类,Int32[]的索引器就可以参考Array的索引器:
    object IList.this[int index]
    {
        get
        {
            return this.GetValue(index);
        }
        set
        {
            this.SetValue(value, index);
        }
    }
     
      

  6.   


    那Array的GetValue(int index)又是怎么实现的呢