C# 尝试将列表转换为数组会产生“错误CS1503:参数1:无法从'System.Collections.Generic.list'转换为'System.array'”
我是python背景的C语言新手。我目前正试图在codewars.com上解决这个问题。这是关于找到一个数的所有除数。我试着用下面的方法来编程,这已经是我在这方面的代码的改进版本了 当执行if divisors.Count>0时,会产生以下错误 错误CS1503:参数1:无法从“System.Collections.Generic.List”转换为“System.Array” 为什么会出现这个错误,我只是在使用列表中的方法。传递除数。ToArray;到那里去;它需要的是数组而不是列表 ToArray不会对除数进行变异,而是返回转换为数组结构的列表副本 因此: 应该是C# 尝试将列表转换为数组会产生“错误CS1503:参数1:无法从'System.Collections.Generic.list'转换为'System.array'”,c#,arrays,list,error-handling,C#,Arrays,List,Error Handling,我是python背景的C语言新手。我目前正试图在codewars.com上解决这个问题。这是关于找到一个数的所有除数。我试着用下面的方法来编程,这已经是我在这方面的代码的改进版本了 当执行if divisors.Count>0时,会产生以下错误 错误CS1503:参数1:无法从“System.Collections.Generic.List”转换为“System.Array” 为什么会出现这个错误,我只是在使用列表中的方法。传递除数。ToArray;到那里去;它需要的是数组而不是列表 ToArr
if (divisors.Count > 0)
{
var divisorsArray = divisors.ToArray();
Array.Sort(divisorsArray);
return divisorsArray;
}
错误应该消失了
顺便说一句,用边做边休息,而不是边做边休息
divisors.ToArray();
创建一个新的int[]数组并将其丢弃。然后尝试将列表除数列表作为数组进行排序:
问题是ToArray方法返回一个数组,而不是转换数组中的对象 要解决此问题,您必须执行以下操作: 如果除数.计数>0 { var divs=除数.OrderBy.ToArray; 返回divs; }
我认为您的意思是将if语句的部分更改为“return Array.sortdivisiors.ToArray;”;。但是,这会产生错误CS0029:无法将类型“void”隐式转换为“int[]”这是不对的。Array.sort将返回void,但其方法应为int arraysok nevermind,并在编辑之前进行注释。我提到的错误仍然存在,这就是为什么我一个接一个地返回除数数组。Sort@madreflectionDo我必须知道每个方法吗?我不这么认为,你们在记事本上写c代码吗?如果我必须了解所有的公司,那么使用强类型语言有什么意义呢。c'mon.divisors.ToArray不会将当前列表转换为数组这意味着实例可以更改其运行时类型,但它会创建一个新数组,该方法将返回该数组。因此,您应该将ToArray的返回值赋给一个变量,并在Sort中使用它。对于集合类型数组、列表等,不要返回null。。而是返回一个空集。然后,您可以删除>0检查,因为您不必根据是否存在任何项目来执行任何不同的操作。是否需要在公共静态之前添加一些内容?此代码生成以下错误错误CS1061:“List”不包含“OrderBy”的定义,并且找不到接受“List”类型的第一个参数的可访问扩展方法“OrderBy”?是否缺少using指令或程序集引用?添加using System.Linq;在顶端
if (divisors.Count > 0)
{
var divisorsArray = divisors.ToArray();
Array.Sort(divisorsArray);
return divisorsArray;
}
divisors.ToArray();
// divisors is List<int>, not expected int[]
return Array.Sort(divisors);
using System.Linq;
...
public static int[] Divisors(int n)
{
...
if (divisors.Count > 0)
{
// Order List, create an array from it and, finally, return the array
return divisors.OrderBy(item => item).ToArray();
}
else
//TODO: better return an empty array: return int[0];
return null;
}