您的位置:首页 > 编程语言 > C#

C#中简单索引器的实现

2010-06-24 01:04 323 查看
索引器允许类或者结构的实例按照与数组相同的方式进行索引。索引器类似属性,但不同之处在于它们的访问器采用参数。它可以像数组那样对对象采用下标。它提供了通过索引方式方便地访问类的数据信息的方法。

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

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

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

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

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

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

Code:

/// <summary>

/// Student类 具备学生基本属性 一个方法SayHi()

/// </summary>

public class Student

{

//构造函数

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

{

this.Name = name;

this.Age = age;

this.Hobby = 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);

}

}





Code:

/// <summary>

/// Students类,含有两种简答索引器

/// </summary>

public class Students

{



//构造函数

public Students()

{

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

stu[1] = new Student("jack",21,"football");

stu[2] = new Student("mimi",20,"reading");

}

public Student[] stu = new Student[3]; //Student类型的数组





//简单整数索引器

public Student this[int index]

{

get

{

return stu[index];

}

}



//简单字符串索引器

public Student this[string name]

{

get

{

int i;

bool found = false;



for (i = 0; i < stu.Length; i++)

{

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

{

found = true;

break;

}

}

if (found)

{

return stu[i];

}

else

{

return null;

}

}

}

}

Code:

class Program

{

static void Main(string[] args)

{

Students stu = new Students(); //实例化一个Students类的对象



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



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

}

}

以上,我们就实现了一个简单的索引器~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: