4e1548abe2
Part1
131 lines
3.5 KiB
C#
131 lines
3.5 KiB
C#
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
|
|
}
|
|
}
|
|
}
|