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; }
} }
现在我的问题是什么时候内存将分配给索引器,因为索引器可以包含所有类型的数据类型值。
这里有三个完全独立的部分:
- 索引器。它使用no memory。它只是告诉程序在哪里寻找其他使用内存的东西的方法。
-
object[2]
数组。数组本身是一个使用内存的对象。然而,这个对象只存储引用,所以它的大小总是一样的,不管你在里面放什么。 你放入数组中的任何对象都使用它们自己的内存。小对象使用少量内存,但大对象可以使用大量内存。然而,由于数组只存储引用,因此它的内存仅为对象本身使用的原始内存。
所有这些,对象数组很少是一个好的设计选择,无论是"对象"还是"数组"部分。
索引器不包含任何内存。它只是一对方法,一个用于获取,一个用于设置。内部用来实现索引器的数组占用内存,并且在通过new
分配类的实例时分配。