- 属性与索引的区别
属性 索引器 通过名称标识 通过参数列表进行标识 通过简单名称访问 通过[]运算符访问 可以用static修饰 不能用static修饰 get访问器没有参数 get访问器具有与索引相同的参数列表 set访问器包含隐式value参数 除了value参数外,索引的set访问器还有与索引相同的参数列表 - 示例
1 class Person 2 { 3 private readonly string[] _data = new string[6]; 4 private readonly string[] _keys = { 5 "Name", "Age", "Sex" 6 }; 7 8 //注:程序中用了两种方法来索引: 9 //一是整数作下标,二是字符串(关键词名)作下标10 public string this[int idx]11 {12 set13 {14 if (idx >= 0 && idx < _data.Length)15 _data[idx] = value;16 }17 get18 {19 if (idx >= 0 && idx < _data.Length)20 return _data[idx];21 return null;22 }23 }24 public string this[string key]25 {26 set27 {28 int idx = FindKey(key);29 this[idx] = value;30 }31 get32 {33 return this[FindKey(key)];34 }35 }36 private int FindKey(string key)37 {38 for (int i = 0; i < _keys.Length; i++)39 if (_keys[i] == key) return i;40 return -1;41 }42 static void Main(string[] args)43 {44 Person record = new Person();45 record[0] = "Jhon Snow";46 record[1] = "23";47 record["Sex"] = "男";48 Console.WriteLine(record["Name"]);49 Console.WriteLine(record["Age"]);50 Console.WriteLine(record[2]);51 Console.ReadLine();52 }53 }