0

我试图理解 C# 中 ConvertAll 的语法,尽管查看了几个示例并尝试复制它们,但我无法编译包含 s2 的以下行;VSE2013 说

“错误 1 ​​方法 'ConvertAll' 没有重载需要 1 个参数”。

错误信息是什么意思?我哪里错了?是的,我知道 Select 在这些情况下更适合使用,原因有几个。谢谢!

static int Main(string[] args)
{ 
    Console.WriteLine ("jello world");

    int s1 = args.Sum(st => int.Parse(st));
    int s2 = args.ConvertAll(x => int.Parse(x)).Sum();
    int s3 = args.Select(st => int.Parse(st)).Take(2).Sum();
    return 0;
}
4

2 回答 2

2

您正在调用ConvertAll一个实际的数组实例- 但ConvertAll它是一个静态方法,因此无法访问数组的内容 - 您需要将数组本身作为第一个参数传入,以便它可以使用它 - 因为它是静态方法应该在Array类本身上调用它:

int s2 = Array.ConvertAll(args, x => int.Parse(x)).Sum();

使用方法组也更短:

int s2 = Array.ConvertAll(args, int.Parse).Sum();
于 2015-04-09T04:31:46.877 回答
1

更改args.ConvertAll(x => int.Parse(x)).Sum();Array.ConvertAll(args, x => int.Parse(x)).Sum();

正如错误消息告诉您的那样,“ConvertAll”不接受 1 个参数,因此这应该会提示您需要更多参数(在本例中为数组)。

有关 Array.ConvertAll 的正确用法,请参阅MSDN

于 2015-04-09T04:31:46.400 回答