c#中索引器的内存分配

时间:2015-07-18 15:52:04

标签: c# indexer

我在C#中使用Indexer但是我想知道在什么时候将为索引器分配内存,因为索引器包含对象数组。 这是索引器的演示代码。

   class person{
    private object[] _demo = new object[ 2 ];
    public object this[int i]
    {
        get { return _demo[ i ]; }
        set { _demo[ i ] = value; }
    } }

现在我的问题是在什么时候为索引器分配内存,因为索引器可以包含所有类型的数据类型值。

2 个答案:

答案 0 :(得分:3)

这里有三个完全独立的部分:

  1. 索引器。它使用无内存。它只是告诉程序在哪里寻找使用内存的其他东西的方法。
  2. object[2]数组。该数组本身就是一个使用内存的对象。但是,此对象仅存储引用,因此无论您放入什么内容,它都将始终具有相同的大小。
  3. 您放入阵列的任何对象都使用自己的内存。小对象使用一点内存,但大对象可以使用很多。但是,因为数组只存储引用,所以内存只是用于对象本身的原始内存。
  4. 所有这一切,对象数组很少是一个很好的设计选择,对于"对象"和"数组"一部分。

答案 1 :(得分:2)

索引器不包含任何内存。它只是一对方法,一个用于获取,一个用于设置。您在内部用于实现索引器的数组占用内存,并且在通过new分配类的实例时分配它。