函数中绝对数的和

mig*_*ton 2 c#

我试试这个:

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。

那么为什么我的代码不起作用呢?

Tim*_*ter 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)