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

错误C#:索引超出范围。必须为非负数且小于集合的大小,c#,outofrangeexception,C#,Outofrangeexception,我在for循环中创建对象并将其添加到列表中时遇到问题。这个程序以“你想添加多少”开头,无论我写什么,它都会向我显示一条消息:索引超出范围。必须为非负数且小于集合的大小。 出了什么问题?很抱歉,如果还有其他类似的问题,但我找不到答案。 谢谢大家! using System; using System.Collections.Generic; class Animals { public int id { get; set; } public string name {

我在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();
    }
}
使用系统;
使用System.Collections.Generic;
类动物
{
公共int id{get;set;}
公共字符串名称{get;set;}
公共字符串颜色{get;set;}
公共整数{get;set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
控制台。写(“你想添加多少动物?:”;
int count=int.Parse(Console.ReadLine());
var newanives=新列表(计数);
for(int i=0;i
var newanives=new List(内部数据结构在不调整大小的情况下可容纳的元素总数)

正如在关于此构造函数的文章中所述:

初始化列表类的新实例,该实例为空且具有 指定的初始容量

您需要使用方法将元素添加到列表中

newAnimals.Add (new Animal() {id = 1, name = "name"});

var newanives=newlist(内部数据结构在不调整大小的情况下可容纳的元素总数)

正如在关于此构造函数的文章中所述:

初始化列表类的新实例,该实例为空且具有 指定的初始容量

您需要使用方法将元素添加到列表中

newAnimals.Add (new Animal() {id = 1, name = "name"});

由于您没有将任何项目添加到列表
newAnimals
,因此该列表为空,因此索引0中没有任何项目

创建
Animal
的一个实例,然后添加它(我重命名了类名,因为它是单数):


在此之后,您可以检索索引0处的项目。

因为您没有向列表添加任何项目
newAnimals
,所以它是空的,因此索引0上没有项目

创建
Animal
的一个实例,然后添加它(我重命名了类名,因为它是单数):

在此之后,您可以在索引0处检索项目。

如果您知道初始(和最终)大小,也可以使用
Animals[]
。然后,您可以按照自己的方式(通过索引)初始化数组。如果以后可以更改大小,则应使用
列表
列表。添加
以添加元素。如果知道初始(和最终)大小,也可以使用
动物[]
。然后,您可以按照自己的方式(通过索引)初始化数组。如果以后可能会更改大小,则应使用
列表
列表。添加
来添加元素。