假设我们想要保存一个班级中每个学生的姓名、年龄、语文考试成绩等信息。当需要很多同学的信息时,我们可以用数组保存。
static void Main(string[] args)
{
//姓名数组
string[] names = new string[5] { "小明", "小红", "小军"," "," " };
//年龄数组
int[] ages = new int[5] { 8, 7, 7, 0, 0 };
//语文成绩数组
int[] ChineScore = new int[5] { 100, 99, 98, 0, 0 };
//用\t制表符绘制表格形式
Console.WriteLine($"姓名:{names[0]} \t 年龄:{ages[0]} \t 语文分数:{ChineScore[0]} ");
Console.WriteLine($"姓名:{names[1]} \t 年龄:{ages[1]} \t 语文分数:{ChineScore[1]} ");
Console.WriteLine($"姓名:{names[2]} \t 年龄:{ages[2]} \t 语文分数:{ChineScore[2]} ");
Console.WriteLine($"姓名:{names[3]} \t 年龄:{ages[3]} \t 语文分数:{ChineScore[3]} ");
Console.WriteLine($"姓名:{names[4]} \t 年龄:{ages[4]} \t 语文分数:{ChineScore[4]} ");
}
这样写完全符合题目要求,但是硬要说问题的话就是不太自然。
上述代码中,因为使用三个数组来管理所有信息,所以感觉名字是一个数组,年龄是一个数组,分数是一个数组。那么小明的所有信息都是下标为0的数组,以此类推,但是数组之间没有什么紧密的联系,相反名字与名字之间,年龄与年龄之间倒是因为在同一个数组中紧密联系着,这样显得不够自然。应当让每个学生自己的信息结合在一起,这样当某一个同学需要移除可以将该同学所有信息同名字一同移除,而不是移除名字,再移除年龄等信息。这与变量的生命周期相似,学生的姓名应于他们其他的个人信息紧密联系,同生同灭。
这亦是一个数据的归属问题,学生的数据应该归属于学生,这样的设计才最清楚最易理解。
那么如何才能使学生自身的数据结合在一起呢?这就需要今天所讲的新语法:class
class Student
{
public string name;
public int age;
public int ChineseScore;
}
通过这样的定义,可以将我们需要的元素保存在一个student这个类函数中,并用public允许这些元素可以被使用
Student st1 = new Student(); //创建的了一个st1的学生对象
st1.name = "小明";
st1.age =8;
st1.ChineseScore = 100;
Console.WriteLine($"姓名:{st1.name} 年龄:{st1.age} 语文分数:{st1.ChineseScore}");
Student st2 = new Student();
st2.name = "小红";
st2.age = 7;
st2.ChineseScore = 99;
Console.WriteLine($"姓名:{st2.name} 年龄:{st2.age} 语文分数:{st2.ChineseScore}");
Student st3 = new Student(); //创建的了一个st1的学生对象
st3.name = "小军";
st3.age = 7;
st3.ChineseScore = 98;
Console.WriteLine($"姓名:{st3.name} 年龄:{st3.age} 语文分数:{st3.ChineseScore}");
如此一来就可以清楚的使学生自身的数据结合在一起了