c# - 函数中绝对数的总和

标签 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); 
}

在主函数中:

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/

相关文章:

c# - 举办锦标赛,如何存储所有玩家分数

c# - 错误 :A local variable named 'Model' cannot be declared in this scope

c# - Blazor WebAssembly - 如何在自动生成的 web.config 中添加 "http to https"URL 重写规则

可以选择由子类实现的 C# 方法,无需基方法

c# - 初始化对象时强制进行属性初始化

c# - .NET 类似于 PHP 的 PDO?

c# - 限制页码显示在自定义分页上

c# - 使用 LINQ .ExecuteQuery 调用存储过程以返回非映射字段

c# - 提高 Bitconverter.ToInt16 的性能

c# - 从 Azure 数据湖下载文件