【发布时间】:2016-06-14 12:56:24
【问题描述】:
我在 for 循环中创建对象并将它们添加到列表中时遇到了问题。该程序以“您要添加多少?”开始。无论我写什么,它都会向我显示一条消息:索引超出范围。必须是非负数且小于集合的大小。 出了什么问题?抱歉,如果还有其他类似的问题,但我找不到答案。 谢谢!
using System;
using System.Collections.Generic;
class Animals
{
public int id { get; set; }
public string name { get; set; }
public string color { get; set; }
public int age { get; set; }
}
class Program
{
static void Main(string[] args)
{
Console.Write("How much animals you want to add?: ");
int count = int.Parse(Console.ReadLine());
var newAnimals = new List<Animals>(count);
for (int i = 0; i < count; i++)
{
newAnimals[i].id = i;
Console.Write("Write name for animal " + i);
newAnimals[i].name = Console.ReadLine();
Console.Write("Write age for animal " + i);
newAnimals[i].age = int.Parse(Console.ReadLine());
Console.Write("Write color for animal " + i );
newAnimals[i].color = Console.ReadLine();
}
Console.WriteLine("\nAnimals \tName \tAge \tColor");
for (int i = 0; i < count; i++)
{
Console.WriteLine("\t" + newAnimals[i].name + "\t" + newAnimals[i].age + "\t" + newAnimals[i].color);
}
Console.ReadLine();
}
}
【问题讨论】:
-
如果您知道初始(和最终)大小,您也可以使用
Animals[]。然后你可以用你的方式初始化数组(通过索引)。如果以后大小可能会改变,您应该使用List<Animals>和List<>.Add添加元素。