【问题标题】:C# - How to sum values of a generic list? [duplicate]C# - 如何对通用列表的值求和? [复制]
【发布时间】:2016-05-05 23:01:18
【问题描述】:

我想得到val 字段的总和。

// member method 
public T sum()
{
    sum = default(T);
    int i = 0;
    while (i < size)
        sum += val[i++];
}

private int size = 0;
private int usedSize = 0;
private T[] val = null;

【问题讨论】:

  • 是否可以添加更多信息
  • 尝试对具有泛型类型的值进行数学运算效果不佳,有一些变通方法,但它们都有不同程度的坏处。你在用这个做什么?也许可以避免?
  • 我想得到列表的总和,我刚从c++切换到c#
  • 你不能那样做;编译器不知道可以将 T 加在一起。见stackoverflow.com/questions/8122611/…
  • 我认为您可以使用 Linq 做到这一点,而无需实现任何功能。 msdn.microsoft.com/en-us/library/… 。虽然看起来你需要传递一个参数,但你不需要,因为它是一个扩展方法(注意参数上的 this 字)。所以不要写Sum(Collection),而是写Collection.Sum()

标签: c# generics


【解决方案1】:

以下是一些使用 System.Linq 的工作示例;

void Main()
{
    List<int> numbers = Enumerable.Range(1,100).ToList();
    var result = numbers.Sum();
    Console.WriteLine(result); // Prints 5050
    List<SomeType> customTypeList = Enumerable.Range(1, 100).Select(x => new SomeType { SomeVal = x}).ToList();
    var customResult = customTypeList.Sum(n => n.SomeVal);
    Console.WriteLine(result); // Prints 5050
}

public class SomeType
{
    public int SomeVal { get; set;}
}

【讨论】:

  • 我觉得这解决不了我的问题,谢谢大家
猜你喜欢
  • 2014-03-03
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 2016-10-17
  • 2014-06-15
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
相关资源
最近更新 更多