索引器类似于属性。和属性相似,索引器一样有get和set访问器。
索引器与属性的不同点:
1、每个属性的名称必须唯一,而每一个索引器的签名必须唯一。
2、索引器的“属性名”统一为this。而不能为其他,专门用于定义索引器。
3、索引器的参数列表包含在方括号而不是圆括号之内。
4、属性可以是静态的,而索引器只能为实例成员。
5、属性的get访问器没有参数,而索引器的get访问器可以有参数,而且索引器的get访问器和set访问器的参数相同。
6、索引器可以有多个形参,比如访问多维数组时。
索引器和数组对比:
数组 索引器
索引类型 整型,0-n 可以为任意类型
是否存储数据 是 否,通过访问器操作存在其他地方的数据,例如集合或数组字符串等。
是否允许重载 否 是,一个类可以有多个索引器
namespace AllDemo
{
class Program
{
static void Main(string[] args)
{
Index index = new Index(); ;
Console.WriteLine(index[0]); //输出 刘备
index.dic = new Dictionary<string, string>();
index.dic.Add("诸葛亮", "村夫");
Console.WriteLine(index["诸葛亮"]); //输出 村夫
Console.ReadKey();
}
}
public class Index
{
string[] strArr = { "刘备", "关羽", "张飞" };
public string this[int i]
{
get
{
return strArr[i];
}
set
{
strArr[i] = value;
}
}
public Dictionary<string, string> dic;
public string this[string name]
{
get
{
return dic[name];
}
set
{
dic[name] = value;
}
}
}
}