c#中索引器的内存分配

本文关键字:内存 分配 索引 | 更新日期: 2023-09-27 18:03:25

我在c#中使用Indexer,但我想知道在什么时候内存将被分配给Indexer,因为Indexer包含对象数组。这是一个indexer的演示代码。

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

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

c#中索引器的内存分配

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

  1. 索引器。它使用no memory。它只是告诉程序在哪里寻找其他使用内存的东西的方法。
  2. object[2]数组。数组本身是一个使用内存的对象。然而,这个对象只存储引用,所以它的大小总是一样的,不管你在里面放什么。
  3. 你放入数组中的任何对象都使用它们自己的内存。小对象使用少量内存,但大对象可以使用大量内存。然而,由于数组只存储引用,因此它的内存仅为对象本身使用的原始内存。

所有这些,对象数组很少是一个好的设计选择,无论是"对象"还是"数组"部分。

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