gpt4 book ai didi

c# - 使用 Array.Sum 禁用溢出检查

转载 作者:太空狗 更新时间:2023-10-29 22:12:41 25 4
gpt4 key购买 nike

有一个 Pex4Fun 问题要求用户编写代码来计算数组的总和。

using System;
using System.Linq;

public class Program {
public static int Puzzle(int[] a) {
return a.Sum();
}
}

Pex 期望它可以通过 {-1840512878, -2147418112} 并取回下溢的数字 307036306,但是 LINQ 方法 Array.Sum() 会检查溢出。

我不能在 a.Sum() 的方法调用周围使用 unchecked 关键字,因为添加发生在方法内部。

有什么方法可以禁用 Array.Sum() 的下溢/溢出检查吗?

最佳答案

所有 Enumerable.Sum() 的规范如果发生溢出,重载将抛出 OverflowException。这是不可配置的,这是设计使然。只是不要使用该方法。

您仍然可以在这里使用 LINQ 并使用 Enumerable.Aggregate()方法而不是进行检查:

public static int Puzzle(int[] a)
{
return a.Aggregate((sum, i) => unchecked(sum + i));
}

否则手工完成。

关于c# - 使用 Array.Sum 禁用溢出检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8723339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com