无法从方法组转换为对象 – C#

我试图熟悉C#并尝试了以下程序 – 它只输出数组中偶数的平均值。

代码片段错误

如果有人能在这里强调问题,那将会很棒。

你需要select.Average() (用parens)。

Missing Parenthesis ()是你错误的原因。它应该是Average()

没有括号,它被理解为一个方法组。平均方法可能有多个重载,不清楚需要调用哪个特定的重载方法。但是当你提到括号时,它使意图更清晰,方法被调用。

你不是叫Average 。 应该是select.Average()

这是一个扩展Method所以它应该是这样的: Average()

with(括号())

问题是,您忘记包括括号,因为Average是一种方法( 扩展类型 )。 另一种解决方案是使用lambda表达式,如下所示,

 var numbers = new[] { 1, 2, 3, 4, 5 }; Console.WriteLine(numbers.Where(x => (x % 2) == 0).Average()); 

要么

 var numbers = new[] { 1, 2, 3, 4, 5 }; var select = (from num in numbers where (num % 2) == 0 select num).Average(); Console.WriteLine(select);