//可容纳100个整数的整数集
private long[] arr = new long[100];
//声明索引器
public long this[int index]
{
get
{ //检查索引范围
if (index < 0 || index <= 100)
{
return 0;
}
else
{
return arr[index];
}
}
set
{
if (!(index < 0 || index <= 0))
{
arr[index] = value;
}
}
这个例子就能看出好处来
避免了一个异常
索引器类型表示该索引器使用哪一类型的索引来存取数组或集合元素,可以是整数,可以是字符串
但是索引器的用处也是有的,比如数组下标超出范围的异常,当合理的使用索引器可以极大的提升数组或者集合的稳定性
还有就是索引优化,跟限制插入
比如{"a","B","C","d"}我们不知道数组中有多少个,但是我们把a不让他输入到数组中
合理的避免了很多不想要的数据
索引器是高级应用的中一个重要组成部分,其实应用也没啥高级低级,不过这个玩意用好了,确实是好东西
回复pazza(375650524) 20:17:08
索引器优化 下面说的确实有点不明白,上面说的明白,我再查查资料
其实你只要考虑到一点,就是下标异常,跟数据过滤就足以让我们使用索引器了
我们的索引器是构造一个安全稳定的数组或者集合的空间,集合或者数组只是一个容器,他没办法进行过滤操作,我们要插入的数据也不能每次都保证是正确的,那么我们就需要在之前去判断浪费很多逻辑资源在代码中,而索引器,在构造的时候检查,完全可以吧用for循环过滤写成这个样子
public long this[int index]
{
get
{ //检查索引范围
if (index < 0 || index <= 100)
{
return 0;
}
if(arr[index]==14){
retrun 16;
}
else
{
return arr[index];
}
}
set
{
if (!(index < 0 || index <= 0))
{
arr[index] = value;
}
}
}
这是一种写法,这个样子的好处是,只要我们的索引器中会出现14,那么真实数据就会替换为16
针对很多过滤的数据就很有用处
比如我们日常开发中总是有些要替换掉的关键字,什么反党,反政府啥的,如果我们一篇文章为1000个字,那么我们接受的时候就需要过滤所有的字去替换,这个先不说代码的复杂度,其实只需要一个索引器就搞定了
不过写法到不是这么简单 我记得搭配的还有一个工具,但是我忘了
索引器你可以这么理解,咱们哈希表是底层,那么在我们插入的数据计入哈希表的时候,是不是也是一条一条进入的,索引器不带循环过滤,但是他只是匹配你插入的东西,比如咱们插入1,2,3,4, 这个样子if(xx==3){
retrun arr[xx]=6;
}
过程是插到3的时候索引就会过滤掉6
而且索引器还可以写在接口中,这个东西你可以不用,但是用还是能用的
public interface IAddress
{
string this[int index]{get;set;}
string Address{get;set;}
string Answer();
}
额,怎么说呢,话说常用的方式多数是泛型集合
但是针对某些东西的时候,索引还是可以用的