标签:理解 logs nbsp tom return c#语言 成员 family ons
1.索引器:C#语言中的类成员,使得对象可以像数组一样被引用,使程序看起来更直观,更容易被编写。
一个简单的案例:
1 class TestIdx 2 { 3 public string this[int i] 4 { 5 get { 6 return names[i]; 7 } 8 set { 9 names[i] = value; 10 } 11 } 12 private string[] names= {"lily","lucy","tom" }; //私有字段names 13 }
1 static void Main(string[] args) 2 { 3 TestIdx tidx = new TestIdx(); 4 string str_name = tidx[0]; //调用get方法,取值 5 tidx[1] = "sam"; //给索引器赋值,其实就是调用set方法 6 Console.ReadKey(); 7 }
TestIdx 这个类的实例显然不能直接操作private字段names,可以在类中定义一个索引器,来达到操作names的目的
2.索引器语法:
从以上这个最简单的案例总结一下索引器的语法: [权限修饰符] 返回值类型 this[参数类型 参数名]
{
get 方法
set方法
}
ps:可能我理解的不够深,处于封装的考虑,保护成员变量,存储集合类对象设置为私有,然后设置访问他们的方法,那么把访问他们的方法也设为私有,我理解不了,pativate类型的索引器有什么作用,在我看来就是闲的蛋疼。
3.索引器与属性同为c#的语法糖,这里做一下比较:
属性用名称来标识,名称随便取,索引器用this关键字来标记;
索引器有参数列表,和一般的方法不同之处在于写在了[]中...,所以索引器可以重载,属性当然不可以了;
属性可以用static修饰,索引器不行,索引器只能通过实例来操作。
需要特别注意的是不光只能通过数字索引,还可以是字符串等类型:
字符串索引案例:
class TestIdx2 { public Dictionary<string, string> dic = new Dictionary<string, string>() { {"a1","aaa"}, {"b1","bbb" }, {"c1","ccc" } }; public string this[string str] { get { return dic[str]; } set { dic[str] = value; } } }
static void Main(string[] args) { TestIdx2 idx2 = new TestIdx2(); string stmp = idx2["a1"]; //get方法,取值 idx2["b1"] = "ccccc"; //set方法,赋值 Console.ReadKey(); }
标签:理解 logs nbsp tom return c#语言 成员 family ons
原文地址:http://www.cnblogs.com/caojiannan/p/7498043.html