C# 如何从用户的类创建对象?

C# 如何从用户的类创建对象?,c#,C#,我已经创建了一个类“Person”,我想做一个while循环,让用户添加对象,直到他们想停止为止,但它不起作用 我想问题是我不知道如何从列表中创建新对象,但我不确定 这是我的密码: static void Afficher(List <Personne> maliste) { foreach (var per in maliste) { per.ToString(); } } static void Ajouter(List<Perso

我已经创建了一个类“Person”,我想做一个while循环,让用户添加对象,直到他们想停止为止,但它不起作用

我想问题是我不知道如何从列表中创建新对象,但我不确定

这是我的密码:

static void Afficher(List <Personne> maliste)
{
    foreach (var per in maliste)
    {
        per.ToString();
    }
}

static void Ajouter(List<Personne> maliste)
{
    string s;
    bool stop = false;
    int i = 0;
    while(!stop)
    {
        Console.WriteLine("Entrez les informations ou entrez pour terminez!!");
        Console.WriteLine("Entrez le nom de la personne numero "+ (i+1));
        s = Console.ReadLine();
        if (s == "") break;
            maliste[i] = new Personne();
            maliste[i].nom = s;
            Console.WriteLine("Entrez le prenom de la personne numero " + (i + 1));
            s = Console.ReadLine();
        if (s == "") break;
            maliste[i].prenom = s;
            Console.WriteLine("Entrez l'age de la personne numero " + (i + 1));
            s = Console.ReadLine();
        if (s == "") break;
            maliste[i].age = int.Parse(s);

        i++;
    }
}
static void Afficher(列表maliste)
{
foreach(在maliste的每个变量)
{
per.ToString();
}
}
静态无效AJAOUTER(列表maliste)
{
字符串s;
bool-stop=false;
int i=0;
当(!停止)
{
Console.WriteLine(“Entrez les informations ou Entrez pour terminez!!”;
控制台写入线(“个人编号”+(i+1));
s=Console.ReadLine();
如果(s==“”)中断;
maliste[i]=新员工();
maliste[i].nom=s;
Console.WriteLine(“个人数字企业”+(i+1));
s=Console.ReadLine();
如果(s==“”)中断;
maliste[i].prenom=s;
Console.WriteLine(“个人数字中心”+(i+1));
s=Console.ReadLine();
如果(s==“”)中断;
maliste[i].age=int.Parse(s);
i++;
}
}
maliste[i]=newpersonne()上发生错误行:

ArgumentOutOfRangeException:索引超出范围。必须为非负数且小于集合的大小


添加新项时,不能使用数组索引(如
maliste[i]
)。您只需调用
maliste.Add
即可在列表中插入新项。您的函数应该如下所示:

static void Ajouter(List<Personne> maliste)
{
    string s;
    bool stop = false;
    int i = 0;
    while(!stop)
    {
        Console.WriteLine("Entrez les informations ou entrez pour terminez!!");
        Console.WriteLine("Entrez le nom de la personne numero "+ (i+1));
        s = Console.ReadLine();
        if (s == "") break;
            var pers = new Personne();
            maliste.Add( pers );
            pers.nom = s;
            Console.WriteLine("Entrez le prenom de la personne numero " + (i + 1));
            s = Console.ReadLine();
        if (s == "") break;
            pers.prenom = s;
            Console.WriteLine("Entrez l'age de la personne numero " + (i + 1));
            s = Console.ReadLine();
        if (s == "") break;
            pers.age = int.Parse(s);

        i++;
   }
}
static void Ajouter(列出maliste)
{
字符串s;
bool-stop=false;
int i=0;
当(!停止)
{
Console.WriteLine(“Entrez les informations ou Entrez pour terminez!!”;
控制台写入线(“个人编号”+(i+1));
s=Console.ReadLine();
如果(s==“”)中断;
var pers=新员工();
maliste.Add(pers);
pers.nom=s;
Console.WriteLine(“个人数字企业”+(i+1));
s=Console.ReadLine();
如果(s==“”)中断;
pers.prenom=s;
Console.WriteLine(“个人数字中心”+(i+1));
s=Console.ReadLine();
如果(s==“”)中断;
pers.age=int.Parse(s);
i++;
}
}

添加新项时,不能使用数组索引(如
maliste[i]
)。您只需调用
maliste.Add
即可在列表中插入新项。您的函数应该如下所示:

static void Ajouter(List<Personne> maliste)
{
    string s;
    bool stop = false;
    int i = 0;
    while(!stop)
    {
        Console.WriteLine("Entrez les informations ou entrez pour terminez!!");
        Console.WriteLine("Entrez le nom de la personne numero "+ (i+1));
        s = Console.ReadLine();
        if (s == "") break;
            var pers = new Personne();
            maliste.Add( pers );
            pers.nom = s;
            Console.WriteLine("Entrez le prenom de la personne numero " + (i + 1));
            s = Console.ReadLine();
        if (s == "") break;
            pers.prenom = s;
            Console.WriteLine("Entrez l'age de la personne numero " + (i + 1));
            s = Console.ReadLine();
        if (s == "") break;
            pers.age = int.Parse(s);

        i++;
   }
}
static void Ajouter(列出maliste)
{
字符串s;
bool-stop=false;
int i=0;
当(!停止)
{
Console.WriteLine(“Entrez les informations ou Entrez pour terminez!!”;
控制台写入线(“个人编号”+(i+1));
s=Console.ReadLine();
如果(s==“”)中断;
var pers=新员工();
maliste.Add(pers);
pers.nom=s;
Console.WriteLine(“个人数字企业”+(i+1));
s=Console.ReadLine();
如果(s==“”)中断;
pers.prenom=s;
Console.WriteLine(“个人数字中心”+(i+1));
s=Console.ReadLine();
如果(s==“”)中断;
pers.age=int.Parse(s);
i++;
}
}

基于您希望将
stop
设置为true以跳出循环的某个地方。您还需要更加清楚地说明
不起作用
@makeStackOverflowGood再次不,如果
检查,他们会在几次格式错误的
中中断
,所以一切都很好(
while(true)
会更好,但是…)在某个地方,您需要将
stop
设置为true以打破循环。您还需要更加清楚地说明
不起作用
@makeStackOverflowGood再次不,如果
检查,他们会在几次格式错误的
中中断
,所以一切都很好(
while(true)
会更好,但是…)