我们已经很习惯在使用数组或者集合的时候,通过索引号引用他们中的某个成员。如果我们需要为自己的类型实现同样的功能,那么可以参考下面的例子
class Program
{
static void Main(string[] args)
{
Customers cs = new Customers();
Customer c = new Customer();
c.CustomerID = 1;
cs.Items = new List<Customer>();
cs.Items.Add(c);
Console.WriteLine(cs[0].CustomerID);
Console.Read();
}
}
class Customers
{
public List<Customer> Items { get; set; }
/// <summary>
/// 这个属性比较特殊,其实就是所谓的索引器
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public Customer this[int index] {
get {
return Items[index];
}
}
}
class Customer
{
public int CustomerID { get; set; }
}
如你所见,定义一个索引器并不复杂。它其实就是一个属性,但是用一个特殊的写法:this[int index]来作为属性名称
public Customer this[int index] { get { return Items[index]; } }