java类中定义索引器_C#中的索引器

索引器允许类或者结构的实例按照与数组相同的方式进行索引。索引器类似属性,但不同之处在于它们的访问器采用参数。

属性启用类似字段的访问,而索引器启用类似数组的访问。

它可以像数组那样对对象采用下标。它提供了通过索引方式方便地访问类的数据信息的方法。

C#并不将索引类型限制为整数,所以我们可以通过访问器的重载,实现整数索引或者字符串索引。

重载索引器时,要保证形参的数量或形参类型至少有一不同。这一点同C#中方法重载貌似没有什么区别。

下面我们就通过简单的例子,实现整数索引和字符串索引。

在这个例子中,我们需创建两个类 --> Student   Students

Student类中,包含学生基本信息(属性)和一个方法SayHi()

Students类中,包含我们要创建的两种索引器,一个Student类类型的数组

//Student类

public Class Student

{        //构造函数

public Student(){}

public Student(string name,int age,string hobby)

{

this.name = name;

this.age = age;

this.hobby = hobby;

}

//三个属性 (姓名)Name,(年龄)Age,(爱好)Hobby

private string name;

public String Name

{

get{return name;}

set{name = value;}

}

private int age;

public int Age

{

get{return age;}

set{age = value;}

}

private string hobby;

public string Hobby

{

get{return hobby;}

set{hobby = value;}

}

//方法

public void SayHi()

{  Console.WriteLine("大家好,我是{0},今年{1}岁,喜欢 {2}",Name,Age.ToString(),Hobby);    }

}

//Students类

Public Class Students

{    //加载时初始化stu数组

public Students()

{  stu[0] = new Student("rose",21,"dancing");

stu[1] = new Student("jack",22,"reading");

stu[2] = new Student("mimi",21,"singing");   }

//Student类类型数组属性

private Student [] stu = new Student[3];

//整数索引器

public Student this[int index]

{

get{return stu[index];}

}

//字符串索引器

public Student this[string name]

{

get  {  int i ;  bool found = false;  for(i = 0;i 

{ if(stu[i].Name == name)

{ found = true;  break; } }

if(found)  { return stu[i]; }

else  {return null; }

}

}

}

Public Class Program

{      //Main函数中

static void Main()

{Students stu = new Students();

stu[0].SayHi();        //通过索引查找

stu["rose"].SayHi();   //通过姓名查找

Console.ReadKey();  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值