C#中的索引器和数组有什么不同?

索引器在使用的时候,是不是可以无限赋值?比如:数组事先还需要声明长度,索引器需不需要声明呢?索引器的用法好像和数组有什么区别?比如:MyClassmy=newMyClas... 索引器在使用的时候,是不是可以无限赋值?
比如:数组事先还需要声明长度,索引器需不需要声明呢?
索引器的用法好像和数组有什么区别?

比如:
MyClass my=new MyClass();

my[0]=123;
my[1]=456;
my[2]=789
只声明了一个my对象,那么上面的哪三个数据存到那里了?
展开
 我来答
depluin
推荐于2018-04-27 · TA获得超过3179个赞
知道大有可为答主
回答量:3378
采纳率:75%
帮助的人:2432万
展开全部

一般来讲,实现了索引器的类都是集合类或包含有集合类。索引器可以让你方便的引用这个集合中的数据。

索引器无需声明,在声明了索引器的类上可以直接使用。

索引器跟数组的区别主要在


  1. 索引器的索引值(Index)类型不一定为整数

    用来访问数组的索引值(Index),其类型一定为整数,然而索引器可以定义其他类型的索引值。

  2. 索引器允许重载(Overloading)

    一个类并不限制只能够定义一个索引器,只要索引器的函数签名不同,一个类就可以拥有很多个索引器,你可以重载它的功能。

  3. 索引器不是一个变量

    索引和数组不同的地方在于,索引器并没有直接对应引用数据存储的地方,而数组则有。索引器有get访问器与set访问器,用来指明要读取或写入索引器元素时,需要执行的代码。


在你的例子中,MyClass 内部有一个int数组或集合,你使用的索引实际上是去引用了内部集合类的。

freeeeeewind
2013-10-28 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1291万
展开全部
索引器是class或struct的属性方法。通过索引器,可以像数组一样,使用实例内部的数据。
以下的类定义了一个索引器(Indexer)

public class MyClass
{
private int[] innerData;
public MyClass()
{
this.innerData = new int[100];

}
//索引器 Indexer

public int this[int index]
{
get{ return this.innerData[index];}
set{ this.innerData[index] = value;}

}

}
实例化MyClass

MyClass my=new MyClass();
通过索引器给赋值
my[0]=123;
my[1]=456;
my[2]=789
从类定义可知,123被放到实例内部的innerData[0],456存放到了innerData[1]……依次类推。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式