为什么我不能在聚合方法中将'字符串'转换为'int'?

Car*_*ers -1 .net c#

为什么这不起作用?真的想不出这个. 在此输入图像描述

Des*_*Fox 5

Aggregate函数定义为:

public static TSource Aggregate<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource,?TSource,?TSource> func)
Run Code Online (Sandbox Code Playgroud)

(这里的文件)

注意你正在使用的string[]是一个IEnumerable<string>如此,TSource将会是一个string

因此,聚合函数的结果将是a string,这意味着你在里面使用的lambda函数Aggregate必须返回a string.在你的情况下,Convert.ToInt32返回一个Int32

知道你使用聚合的原因会很有趣.您不会想知道聚合函数的作用(您可以参考上面的链接),或者您不确定如何处理提供给函数的参数.

编辑:原始SS代码更改

所以,要解决"新问题":

C#

    var test = new []{"0", "0", "0"};
    var output = test.Aggregate((x, y) => $"{Convert.ToInt32(x) + Convert.ToInt32(y)}");
Run Code Online (Sandbox Code Playgroud)

EDIT2:使用值的总和返回INT32

C#

    var test = new []{"1", "3", "2"};
    var output = test.Sum(t => Convert.ToInt32(t));
Run Code Online (Sandbox Code Playgroud)