【问题标题】:How can i create an object from class from user? [duplicate]如何从用户的类创建对象? [复制]
【发布时间】:2019-03-08 23:40:31
【问题描述】:

我创建了一个“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++;
    }
}

maliste[i] = new Personne(); 行发生错误:

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

【问题讨论】:

  • Somewhere 基于您想要将 stop 设置为 true 以跳出循环的内容。您还希望对it doesn't work 更加清楚
  • @MakeStackOverflowGoodAgain 不,他们有 break 在几个错误格式的 if 检查 - 所以一切都很好(while(true) 会更好,但是......)

标签: c#


【解决方案1】:

添加新项目时不能使用数组索引(如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++;
   }
}

【讨论】:

    猜你喜欢
    • 2021-11-22
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2019-10-03
    • 2019-01-02
    • 2012-12-28
    • 2014-11-06
    • 2018-05-10
    相关资源
    最近更新 更多