c#可枚举.求和更改返回类型

本文关键字:返回类型 求和 枚举 | 更新日期: 2023-09-27 18:00:16

您好,可以在不更改枚举类型的情况下更改Sum返回类型吗?

string func(int a)
{
    return (from el in Enumerable.Range(0, a >> 1) select el << 1).Sum().ToString();
}

我想得到Sum()作为的int64

(from el in Enumerable.Range(0, a >> 1) select el << 1)

c#可枚举.求和更改返回类型

Sum始终使用可枚举对象的类型(或映射函数的结果类型),并对不同的数字类型重载。在这种情况下,只需更改Select,即可将要添加的值添加为long1(结果为long)。

// uses: long Enumerable.Sum(IEnumerable<long> t)
(.. select (long)(el << 1)).Sum()

或者,使用接受映射函数的重载。

// uses: long Enumerable.Sum(IEnumerable<T> t, Func<T,long> f)
(.. select el << 1).Sum(i => (long)i)

要只获得不同类型的结果(而不影响用于求和的类型),只需在末尾执行强制转换/转换即可。因为这只会在求和后更改类型,所以在求和函数期间,它对精度和范围/溢出的影响与所示的前两种方法不同。

(long)(.. select el << 1).Sum()

1在C#中,longSystem.Int64