我试试这个:
public static int sum(List<int> list)
{
int sum = 0;
foreach (var item in list)
{
sum = item + sum;
}
return sum;
}
public static int sumAbsolute(List<int> list)
{
foreach (var item in list)
{
Math.Abs(item);
}
return sum(list);
}
在主函数中:
static void Main(string[] args)
{
var list = new List<int>() {
-1,-2,-3
};
Console.WriteLine(sumAbsolute(list));
Console.ReadKey();
}
但输出是 -6 而不是 6。
那么为什么我的代码不起作用?
最佳答案
简而言之:因为 Math.Abs(item)
返回一个您不使用的 int
:
如果你真的想替换列表中的所有 int
,你可以这样做:
for(int i = 0; i < list.Length; i++)
{
list[i] = Math.Abs(list[i]);
}
或者使用 LINQ,这也不需要修改列表:
public static int SumAbsolute(IEnumerable<int> list)
{
return list.Select(Math.Abs).Sum();
}
关于c# - 函数中绝对数的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69962176/