正如它所说:a + b 的结果是 int,但您希望它是 char。要让它编译,你可以使用:
var res = reverse.Aggregate((a,b)=>(char) (a+b));
...但我认为这不会达到你想要的效果。
我建议您不要为此使用 LINQ:
private string Reverse(string strValue)
{
char[] chArray = strValue.ToCharArray();
Array.Reverse(chArray);
return new string(chArray);
}
请注意,这不能与诸如组合字符、代理对等的事情正常工作。
如果你真的想使用 LINQ,你可以这样做:
private string Reverse(string strValue)
{
return new string(strValue.Reverse().ToArray());
}
无需致电Aggregate。如果您真的想让它变慢并使用Aggregate 的字符串连接(它将是 O(n2)),您可以这样做:
private string Reverse(string strValue)
{
return strValue.Reverse().Aggregate("", (str, c) => str + c);
}
这里我们提供了一个字符串种子值,所以参数str 将是一个字符串,+ 将是字符串连接,而不是字符加法。
您可以使用StringBuilder 提高效率:
private string Reverse(string strValue)
{
return strValue.Reverse()
.Aggregate(new StringBuilder(), (sb, c) => sb.Append(c))
.ToString();
}
...但我仍然不确定是否值得...