我试试这个:
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);
}
Run Code Online (Sandbox Code Playgroud)
以及主函数中的:
static void Main(string[] args)
{
var list = new List<int>() {
-1,-2,-3
};
Console.WriteLine(sumAbsolute(list));
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
但输出是-6而不是6。
那么为什么我的代码不起作用呢?
简而言之:因为Math.Abs(item)返回一个int您不使用的:
如果你确实想替换int列表中的所有 s,你可以这样做:
for(int i = 0; i < list.Length; i++)
{
list[i] = Math.Abs(list[i]);
}
Run Code Online (Sandbox Code Playgroud)
或者使用 LINQ,这也不需要修改列表:
public static int SumAbsolute(IEnumerable<int> list)
{
return list.Select(Math.Abs).Sum();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |