Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编写下面的代码并获得以下错误_C# - Fatal编程技术网

C# 编写下面的代码并获得以下错误

C# 编写下面的代码并获得以下错误,c#,C#,代码如下: Console.WriteLine("------no's greater than 20 and divisible by 4 ------------"); { for (i = 0; i < numbers.Count; i++) { var no = numbers.Where(n => n >= 20 && n % 4 == 0).ToList(); Console.WriteLine(no[i]); } Console.R

代码如下:

Console.WriteLine("------no's greater than 20 and divisible by 4 ------------");
{
for (i = 0; i < numbers.Count; i++)
{
    var no = numbers.Where(n => n >= 20 && n % 4 == 0).ToList();
    Console.WriteLine(no[i]);
}
Console.ReadLine();
Console.WriteLine(“----no”大于20并可被4整除);
{
对于(i=0;in>=20&&n%4==0.ToList();
控制台写入线(编号[i]);
}
Console.ReadLine();
获取以下错误:

mscorlib.dll中发生类型为“System.ArgumentOutOfRangeException”的未处理异常。其他信息:索引超出范围。必须为非负且小于集合的大小


您正试图从新列表中获取项目
no
,该项目(可能)包含的元素少于源集合
number
。此外,您还在周期的每个迭代中筛选无效的源集合

如果要筛选和打印符合条件的
numbers
集合中的数字,则应检查循环中
numbers[i]
的此条件:

Console.WriteLine("------no's greater than 20 and divisible by 4 ------------");
for (i = 0; i < numbers.Count; i++)
{
    if(numbers[i] >= 20 && numbers[i] % 4 == 0)
        Console.WriteLine(numbers[i]);
}
Console.ReadLine();

您正试图从新列表中获取项目
no
,该项目(可能)包含的元素少于源集合
number
。此外,您还在周期的每个迭代中筛选无效的源集合

如果要筛选和打印符合条件的
numbers
集合中的数字,则应检查循环中
numbers[i]
的此条件:

Console.WriteLine("------no's greater than 20 and divisible by 4 ------------");
for (i = 0; i < numbers.Count; i++)
{
    if(numbers[i] >= 20 && numbers[i] % 4 == 0)
        Console.WriteLine(numbers[i]);
}
Console.ReadLine();

Where
过滤器返回所有匹配号码的列表,该列表小于
numbers
列表。您需要在循环之前获取匹配号码

var no = numbers.Where(n => n >= 20 && n % 4 == 0).ToList();
for (int i = 0; i < no.Count; i++)
{
    Console.WriteLine(no[i]);
}

Where
过滤器返回所有匹配号码的列表,该列表小于
numbers
列表。您需要在循环之前获取匹配号码

var no = numbers.Where(n => n >= 20 && n % 4 == 0).ToList();
for (int i = 0; i < no.Count; i++)
{
    Console.WriteLine(no[i]);
}

我想你需要这个代码,我更喜欢放在这里。我想这与你的问题有关。这是一个列表

List<int> numbers = new List<int> { 30, 40 };
        List<int> tem = new List<int>();
        numbers.Where(w => w >= 20 && w % 4 == 0).ToList().ForEach(fn =>
        {
            tem.Add(fn);
            Console.WriteLine(fn);
        });
列表编号=新列表{30,40};
List tem=新列表();
其中(w=>w>=20&&w%4==0).ToList().ForEach(fn=>
{
tem.Add(fn);
控制台写入线(fn);
});

我想你需要这个代码,我更喜欢放在这里。我想这与你的问题有关。这是一个列表

List<int> numbers = new List<int> { 30, 40 };
        List<int> tem = new List<int>();
        numbers.Where(w => w >= 20 && w % 4 == 0).ToList().ForEach(fn =>
        {
            tem.Add(fn);
            Console.WriteLine(fn);
        });
列表编号=新列表{30,40};
List tem=新列表();
其中(w=>w>=20&&w%4==0).ToList().ForEach(fn=>
{
tem.Add(fn);
控制台写入线(fn);
});

您应该调试它并查看错误发生的位置。这是一个非常简单的错误,我可以告诉您如何修复它。但我认为,您将通过调试了解更多信息。您过滤数字数组,因此过滤列表的长度可能比未过滤列表的长度小。但您循环未过滤列表的长度=>超出范围…tot欢迎来到堆栈溢出!给你一个很好的答案,如果你浏览一下,它可能对我们有帮助。如果你能提供一个帮助,那么它也可能是有用的。欢迎来到StAdvExcel。如果其中一个答案帮助了你,你可以考虑。这显示了这个职位的未来访问者,它有一个工作解决方案。您应该调试它并查看错误发生的位置。这是一个非常简单的错误,我可以向您展示如何修复它。但我认为,您将通过调试了解更多信息。您过滤数字数组,因此过滤列表的长度可能比未过滤列表的长度小。但您循环未过滤列表的长度=>超出范围…完全超出范围欢迎来到堆栈溢出!给你一个很好的答案,如果你浏览一下,它可能会对我们有所帮助。如果你能提供A,它也可能是有用的。欢迎来到StAdvExcel。如果其中一个答案帮助了你,你可以考虑。这显示了这个职位的未来访问者,它有一个工作解决方案。快乐编码