属性:对字段封装,加强数据安全性的一种特殊的方法
索引:是一种特殊的类成员,能够让对象快速的找到对象中的子元素
索引器一般定义在:一个对象中包含多个自对象的类中
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Student
{
//属性:对字段封装,加强数据安全性的一种特殊的方法
string name;
string sex;
public string Sex
{
get { return sex; }
set { sex = value; }
}
int age;
string remark;
public string Remark
{
get {
//如果备注的长度超过10个字符,截取前10个再加...
//肉则,原样返回
if (remark.Length > 10)
{
return remark.Substring(0, 10) + "...";
}
else
{
return remark;
}
}
set
{
Remark = value;
}
}
/// <summary>
/// 姓名,就算这个属性的方法中没有业务逻辑也封装称方法
/// 以便于代码的扩展
/// </summary>
public string Name
{
get //取值方法
{
//逻辑判断代码的处理
return name;
}
set //赋值方法
{
//value这个关键字,是传进来的参数
name = value;
}
}
//public int Age
//{
// get//一个属性中只有get方法的话,通常叫他只读属性
// {
// return age;
// }
// set
// {
// //Age=value; age不能写成大写的Age(属性)
// age = value;
// }
//}
public int Age
{
get
{
return age;
}
set
{
if (value<=18)
{
age = 18;
}
else if (value>=50)
{
age =50;
}
else
{
age = value;
}
}
}
public Student()
{ }
/// <summary>
/// 初始化学生
/// </summary>
/// <param name="name">姓名</param>
/// <param name="sex">性别</param>
/// <param name="age">年龄</param>
/// <param name="remark">备注</param>
public Student(string name, string sex, int age, string remark)
{
this.name = name;
this.sex = sex;
this.age = age;
this.remark = remark;
}
public void Show()
{
Console.WriteLine("{0}\t{1}\t{2}\t{3}",name,sex,age,remark);
}
//索引器是一种特殊的类成员,能够让对象快速的找到对象中的子元素
}
class Grade
{
List<Student> list = new List<Student>();//所有学生的泛型
//增加学生
public void Add(Student stu)
{
list.Add(stu);
}
//打印list中所有的学生信息
public void Show()
{
foreach (Student item in list)
{
//Console.WriteLine("姓名{0}\t性别{1}\t年龄{2}\t备注{3}",item.Name,item.Sex,item.Age,item.Remark);
item.Show();
}
}
//定义一个索引,这个索引接受一个数字编号
//通过这个数字编号找到对应学生
/// <summary>
/// 通过数字索引找到学生
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public Student this[int index]
{
get
{
//list中index对应的学生
//return list[index];
//如Index大于了list中的总个数,则返回null,反则返回对应的元素
if (index>list.Count||index<0)
{
return null;
}
else
{
return list[index];
}
}
set
{
if (index>=list.Count)
{
//索引号大于了元素的总个数的话,把传进来的元素增加到list中
list.Add(value);
}
else
{
//世界给list中对应的元素赋值
list[index] = value;
}
}
}
//根据姓名查找学生
public Student this[string name]
{
get
{
foreach (Student item in list)
{
if (item.Name == name)
{
return item;
}
}
return null;
}
}
}
class Program
{
static void Main(string[] args)
{
// Student stu = new Student();
// string name= stu.Name = "奥特曼坑爹";
// Console.WriteLine(name);
// //要求在给Age赋值时,年龄要在18~50
// Console.WriteLine("请输入年龄:");
// stu.Age =int.Parse( Console.ReadLine());
// int age = stu.Age;
//Console.WriteLine(age);
//创建一个班级
Grade g = new Grade();
//创建一个学生
Student stu = new Student("奥特曼坑爹", "男", 21, "五");
g.Add(stu);
Student stu1 = new Student("奥特曼", "男", 21, "五");
g.Add(stu1);
//g[1];//取出第二个学生
Student stuSec= g[0];
if (stuSec!=null)
{
stuSec.Show();
}
else
{
Console.WriteLine("不存在该学生");
}
Student stu4 = g[1] = new Student("奥特曼买鸟", "男", 21, "不坑爹");
g.Show();
}
}
}