Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c语言中索引器的内存分配#_C#_Indexer - Fatal编程技术网

C# c语言中索引器的内存分配#

C# c语言中索引器的内存分配#,c#,indexer,C#,Indexer,我在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#中使用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; }
    } }

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

索引器不包含任何内存。这只是一对方法,一个用于获取,一个用于设置。内部用于实现索引器的数组确实占用内存,并且在通过
new
分配类的实例时进行分配。这里有三个完全独立的部分:

  • 索引器。它不使用内存。它只是告诉程序在哪里查找其他使用内存的东西的方法
  • 对象[2]
    数组。数组本身就是一个使用内存的对象。但是,此对象仅存储引用,因此无论您在其中放置什么,它的大小始终相同
  • 放置在数组中的任何对象都使用它们自己的内存。小对象使用少量内存,但大对象可以使用大量内存。但是,由于数组仅存储引用,因此该数组的内存仅为用于对象本身的原始内存

  • 尽管如此,无论是对于“对象”还是“数组”,对象数组都很少是一个好的设计选择部分。

    这并不重要,因为OP的类是从
    对象
    派生的,没有任何显式构造函数,但更具体地说,
    \u demo
    对象是在输入
    person
    类的构造函数之前创建的。