C# 当我试图将用户输入读取到列表中时,但从用户i';我有个例外

C# 当我试图将用户输入读取到列表中时,但从用户i';我有个例外,c#,generics,compilation,C#,Generics,Compilation,当我试图从用户那里读取输入时,它抛出一个类型为的异常 “System.ArgumentOutOfRangeException” 从用户处读取第一个数字后 class Program { static void Main(string[] args) { // Variable Declaration List<int> Marks = new List<int>(); int i, Sum = 0, Avg;

当我试图从用户那里读取输入时,它抛出一个类型为的异常

“System.ArgumentOutOfRangeException”

从用户处读取第一个数字后

class Program
{
    static void Main(string[] args)
    {
        // Variable Declaration
        List<int> Marks = new List<int>();
        int i, Sum = 0, Avg;
        for (i = 0; i <= 3; i++)
        {
            Console.WriteLine("Enter Marks of Subject :");

             **I'm getting an Exception here
             It just reads one subjects marks and then throws exception

            Marks[i] = int.Parse(Console.ReadLine());

              Sum = Sum + Marks[i];**
        }


        Avg = Sum / 4;
        Console.WriteLine("Your Total is  {0} \n\nAverage is   {1}", Sum, Avg);
        Console.ReadLine();

    }
}
}
类程序
{
静态void Main(字符串[]参数)
{
//变量声明
列表标记=新列表();
int i,总和=0,平均值;

for(i=0;i当您输入
for
循环时,列表
标记
为空。
因此,在第一次迭代中,
i
等于0,但不能设置
标记[i]
,因为没有
标记[0]
。它是一个空集合

也许你想要什么而不是什么

Marks[i] = int.Parse(Console.ReadLine());  

简化一点:

var mark = int.Parse(Console.ReadLine());
Marks.Add(mark);
Sum = Sum + mark;
或者,您可以等待
for
循环完成,然后执行,而不是将每个标记一次添加到
Sum

Sum = Marks.Sum();

当您为
循环输入
时,列表
标记
为空。
因此,在第一次迭代中,
i
等于0,但不能设置
标记[i]
,因为没有
标记[0]
。它是一个空集合

也许你想要什么而不是什么

Marks[i] = int.Parse(Console.ReadLine());  

简化一点:

var mark = int.Parse(Console.ReadLine());
Marks.Add(mark);
Sum = Sum + mark;
或者,您可以等待
for
循环完成,然后执行,而不是将每个标记一次添加到
Sum

Sum = Marks.Sum();

您正在尝试索引列表
标记
,但未向其中添加任何项目。我怀疑您正在查找
标记。添加(int.Parse(Console.ReadLine())
您正在混合数组和列表。感谢您的帮助。您正在尝试索引列表
标记
而不向其中添加任何项目。我怀疑您正在查找
标记。添加(int.Parse(Console.ReadLine());
您正在混合数组和列表。感谢您的帮助。