c#中如何通过循环变化数组大小

c#中怎么通过循环变化数组大小
class Program
  {
  struct student
  {
  public int id;
  public string Name;
  public int chinese;
  public int math;
  }
  static void Main(string[] args)
  {
  Random ran =new Random();
  Program p = new Program();
  int chushi = 1;
  student[] stu = new student[chushi];
  bool result=true;
  while (result)
  {
  Console.Write("1.增加 ");
  Console.Write("2.删除 ");
  Console.Write("3.修改 ");
  Console.WriteLine();
  Console.Write("4.查询 ");
  Console.Write("5.排序 ");
  Console.Write("6.退出 ");
  Console.WriteLine();
  Console.Write("请选择所要的操作:");
  string xuanze = Console.ReadLine();
  switch(xuanze)
  {
  case "1": 
  chushi += 1;
  Console.WriteLine("您选择的是操作增加,请输入姓名!");
  stu[chushi - 1].id = chushi - 1;
  string name=Console.ReadLine();
  stu[chushi - 1].Name = name;
  stu[chushi - 1].chinese = ran.Next(70, 80);
  stu[chushi - 1].math = ran.Next(80, 100);
  Console.WriteLine(stu[chushi - 2].Name);
  break;
  case "2": Console.WriteLine("您选择的是操作删除!"); break;
  case "6": Console.WriteLine("您选择的是操作退出!"); result = false; break;
  default:break;
  }
  }
  }
因为chushi开始定义0的时候说超过数组范围什么的(所以我在上面写成1,而上面写的只能定义一次数组内的数),怎么做才可以是上面的数组大小跟随chushi这个变量变化而变化大小?在线等!!!

------解决方案--------------------
你为何不这样实现了:
定义:List<student> stuList=new List<student>();stuList.add(student);
用泛型比你那样实现灵活性大很多呀,你那样写太死板了。