-------Windows Phone 7手机开发、.Net培训、期待与您交流! -------
-->C#面向对象——索引器,开始学完之后,感觉要写得这么麻烦,有什么用啊,可是当与普通使用集合之后,索引器的作用那是没话说,太给力了。
-->集合——ArrayList具有很强的通用性,集合方法:Add与AddRange、Insert与InsertRange、Remove与RemoveAt、Sort与Reverse、IndexOf与LastIndexOf、Contains等,集合可以通过索引来访问,但是有局限性,但是通过索引器就不一样了。
-->集合与索引器的比较:
-->集合——ArrayList的例子
class Person
{
private string name;
private char gender;
private int age;
public Person(string name, int age, char gender)
{
this.name = name;
this.age = age;
this.gender = gender;
}
public void SayHello()
{
Console.WriteLine("大家好,我叫{0},今年{1}岁了,是一名{2}生!",name,age,gender);
}
}
//使用集合——ArrayList
ArrayList al = new ArrayList();
al.Add(new Person("zhangsan",23,'男'));
al.Add(new Person("xiaolan",34,'女'));
//遍历,让集合al中的所有对象执行方法
for (int i = 0; i < al.Count; i++)
{
//由于al[i]是object类型的,所以要强制转换
Person p = (Person)al[i];
p.SayHello();
//或者用((Person)al[i]).SayHello();
}
-->索引器的例子
class Person2
{
ArrayList al;
public Person2()
{
al = new ArrayList();
}
public int Count
{
get { return al.Count; }
}
//只写一个添加和索引
public int Add(Person p)
{
return al.Add(p);
}
public Person this[int index]
{
get { return (Person)al[index]; }
set {al[index]=value;}
}
}
//使用索引器
Person2 p2 = new Person2();
p2.Add(new Person("zhangsan",23,'男'));
p2.Add(new Person("xiaolan",33,'女'));
for (int i = 0; i < p2.Count; i++)
{
p2[i].SayHello();
}
-->((Person)al[i]).SayHello();与p2[i].SayHello();两者的代码比较可读性还是理解难度都是显而易见的。
-->索引器语法:
[访问修饰符] 返回类型 this[索引类型 索引名] //this在类的内部,代表当前实例,引用。
{
//get或set方法体
}
-->索引器是为了方便将类、结构等“非数组”当做“数组”来使用,用于封装内部集合的内容,可以包括任何东西。
-------Windows Phone 7手机开发、.Net培训、期待与您交流! -------