namespace Lesson6 { internal class Program { #region 知识回顾 class 类名 { #region 特征——成员变量 #endregion #region 行为——成员方法 #endregion #region 初始化调用——构造方法 #endregion #region 释放时调用——析构方法 #endregion #region 保护成员变量——成员属性 #endregion } #endregion #region 知识点一 索引器的基本概念 //基本概念 //让对象可以像数组一样通过索引器访问其中元素,使程序看起来更只管,更容易编写 //(不用数组了) #endregion #region 知识点二 索引器基本语法 //访问修饰符 返回值 this[参数类型 参数名,参数类型 参数名......] //{ // 内部的写法可规则和索引器相同 // get{} // set{} //} class Person { private string name; private int age; private Person[] friends; private int[,] array; #region 知识点五 索引器可以重载 //重载的概念是————函数名相同 但 参数类型、数量、顺序不同 #endregion public int this[int i, int j] { get { return array[i, j]; } set { array[i, j] = value; } } public string this[string str] { get { switch (str) { case "name": return this.name; case "age": return this.age.ToString(); default: return ""; } } set { this[str] = value; } } public Person this[int index] { get { #region 知识点四 索引器中可以写逻辑 #endregion if (friends == null) { return null; } else if (friends.Length - 1 < index) { return null; } else { return friends[index]; } } set { if (friends == null) { friends = new Person[] { value }; }else if(index > friends.Length -1) { friends = new Person[] { value }; } } } } #endregion #region 知识点六 #endregion #region 知识点七 #endregion static void Main(string[] args) { Console.WriteLine("Hello, World!"); #region 知识点三 Person p = new Person(); p[0] = new Person(); Console.WriteLine(p[0]); p[0, 0] = 10; #endregion } } }