C#输入数据无故突然暂停

public class user
{
public string name;
public int code;
public int login(user[] a)
{
int i = 0;
for (; i < a.Length; i++)
{
if (a[i].name == name && a[i].code == code)
break;
}
return i;
}
public void Displayinof(user[] a, int i)
{
Console.WriteLine("{0}", a[i].name);
Console.WriteLine("{0}", a[i].code);
}
}
user[] a = new user[num];int i=0;
Console.WriteLine("请输入用户名");
a[i].name = Console.ReadLine();//填完用户名后 不显示 请输入密码,为啥?
Console.WriteLine("请输人密码:");
a[i].code = int.Parse(Console.ReadLine());

图片说明

你调试下就知道了,你初始化了数组,但是数组的元素没有初始化。
int contral = int.Parse(Console.ReadLine());下面加上
a[i] = new user();

我刚才偷懒 ,现在写个完整版的吧 希望大佬们帮帮解决 static void Main(string[] args)
{
int num = 1;
int i = 0,j=0,k=0;
user[] a = new user[num];
student[] b = new student[num];
teacher [] c = new teacher[num];

        Console.WriteLine("1.注册管理者信息2注册学生信息3注册教师信息4登录5查看信息");
        Console.WriteLine("请选择:");
        int contral = int.Parse(Console.ReadLine());
        switch (contral)
        {
            case 1:
                { 

                    Console.WriteLine("请输入用户名");
                    a[i].name = Console.ReadLine();
                    Console.WriteLine("请输人密码:");
                    a[i].code = int.Parse(Console.ReadLine());


                    i++;
                } break;
            case 2:
                {

                    Console.WriteLine("请输入用户名");
                    b[i].name = Console.ReadLine();
                    Console.WriteLine("请输人密码:");
                    b[i].code = int.Parse(Console.ReadLine());
                    Console.WriteLine("请输人班级:");
                    b[i].banji = Console.ReadLine();
                    Console.WriteLine("请输人成绩:");
                    b[i].chinese = int.Parse(Console.ReadLine());
                   j++;
                } break;
            case 3:
                {

                    Console.WriteLine("请输入用户名");
                    c[i].name = Console.ReadLine();
                    Console.WriteLine("请输人密码:");
                   c[i].code = int.Parse(Console.ReadLine());
                    Console.WriteLine("请输人班级:");
                   c[i].bumen = Console.ReadLine();
                    Console.WriteLine("请输人成绩:");
                   c[i].salary = int.Parse(Console.ReadLine());





                    k++;
                } break;


        }
        Console.ReadLine();

public class user
{
public string name;
public int code;
public int login(user[] a)
{
int i = 0;
for (; i < a.Length; i++)
{
if (a[i].name == name && a[i].code == code)
break;
}
return i;
}
public void Displayinof(user[] a, int i)
{
Console.WriteLine("{0}", a[i].name);
Console.WriteLine("{0}", a[i].code);
}
}
}//另外两个类是user子类,就是多写了几个字段和功能,应该不是导致问题的原因
我的问题是选1或2或3,填充用户名后,不显示填密码界面 为什么?