快速了解c#中的索引器


C#中的索引器是新增加的,和属性有些不同。在c#中,属性可以是这样的:

classPerson{
privatestringfirstname;
publicstringFirstName
{
get{returnfirstname;}

set{firstname=value;}
}

}

属性声明可以如下编码:
Personp=newPerson();
p.FirstName="TOM";
Console.WriteLine(p.FirstName);

属性声明倒更像是域声明,只不过它还声明了两个特殊的成员,按照微软的说法就是所谓的访问函数(accessor)。当某一表达式的右边调用属性或者属性用作其他子程序(或者函数)的参数时即会调用get访问函数。反之,当表达式左边调用属性并且通过隐式传递value参数设置私有域值的情况下就会调用set访问函数。
索引器(Indexer)是C#引入的一个新型的类成员,它使得对象可以像数组那样被方便,直观的引用。索引器非常类似于我们前面讲到的属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用。下面是个例子:

using System;


namespace IndexerExample
{

Class MyPreviousExp
{
private string[] myCompanies = new string[10];

//index creation
public string this[int index]
{

get
{
if(index <0 or index >= 6)
return "null";
else
return myCompanies[index];

}
set
{
if(!(index <0 or index >= 10))
myCompanies[index] = value;
}

}
}
Class myMainClass
{
public static void Main()
{
myPreviousExp indexerObj = new myPreviousExp();

indexerObj[0] = "AMS"
indexerObj[3] = "HCL"
indexerObj[5] = "ACC"
for(int i=0; i<10; i++
{

Console.WriteLine(" My Companies{0} : {1} ",i,indexerObj[i]);
}

}
}

}
可见,我们象通过数组那样,访问到了其中的元素,而通过
myPreviousExp indexerObj = new myPreviousExp();
建立了索引器,再通过
indexerObj[0] = "AMS"
indexerObj[3] = "HCL"
indexerObj[5] = "ACC"
设置值
最后输出为:

myCompanies 0 : AMS
myCompanies 1 :
myCompanies 2 :
myCompanies 3 : HCL
myCompanies 4 :
myCompanies 5 : ACC
myCompanies 6 : null
myCompanies 7 : null
myCompanies 8 : null
myCompanies 9 : null

优质内容筛选与推荐>>
1、UVa - 12450 - SpaceRecon Tournament
2、二进制文件转成文本保存,并可以读回
3、[Luogu] 【模板】点分治1
4、spring bean自动注入
5、虚拟DOM节点


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号