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)
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#中,long
是System.Int64
。