快速了解c#中的索引器
2007-03-20 17:28
351 查看
C#中的索引器是新增加的,和属性有些不同。在c#中,属性可以是这样的:
class Person {
private string firstname;
public string FirstName
{
get {return firstname;}
set {firstname = value;}
}
}
属性声明可以如下编码:
Person p = new Person();
p.FirstName = "TOM";
Console.WriteLine (p.FirstName);
属性声明倒更像是域声明,只不过它还声明了两个特殊的成员,按照微软的说法就是所谓的访问函数(accessor)。当某一表达式的右边调用属性或者属性用作其他子程序(或者函数)的参数时即会调用get访问函数。反之,当表达式左边调用属性并且通过隐式传递value参数设置私有域值的情况下就会调用set访问函数。
索引器(Indexer)是C#引入的一个新型的类成员,它使得对象可以像数组那样被方便,直观的引用。索引器非常类似于我们前面讲到的属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用。下面是个例子:
class Person {
private string firstname;
public string FirstName
{
get {return firstname;}
set {firstname = value;}
}
}
属性声明可以如下编码:
Person p = new Person();
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
相关文章推荐
- 快速了解c#中的索引器
- [C#基础教程]之快速了解c#中的索引器及与属性区别
- 快速了解c#中的索引器
- 快速了解c#中的索引器
- 快速了解c#中的索引器
- 快速了解C#接口(Interface)
- 【分享】C#如何快速判断系统是否已经联网?
- [.NET/C#]快速采集全国城市商圈数据
- C#.NET 如何快速输入一个对象事件对应的方法
- C#快速删除bin和obj文件夹的方法
- C#操作Sqlite快速入门及相关工具收集(连接串管用)
- DBA:快速了解MySQL及语法
- 比java c# PHP更牛逼的东西, 如何捕捉机会,如何抓住机会快速反应?
- 黑马程序员_C#代码快速注释。
- C#正则表达式快速入门
- C# listView按列排序、listView数据快速载入
- C# 索引器练习总结
- 快速了解MySQL数据库
- 快速了解高深的管理学