位操作-检查c#中指定位数的检查关键字

本文关键字:检查 定位 关键字 位操作 | 更新日期: 2023-09-27 17:54:03

我们可以在c#中使用checked来检查特定位数的溢出吗,比如25,30等

int A = 0;
int B = 1000;
checked 
{
   A += 1000000; 
   B = B * A; 
}

例如,在上面的例子中,可以检查A是否有27位溢出

位操作-检查c#中指定位数的检查关键字

不,c#中没有这样的支持。

最接近的方法可能是编写自己的方法,使用"正常"类型的溢出检查(int为32位,long为64位等),然后对有效值施加一些额外的限制。

理想情况下,我建议为此创建自己的包装器类型,例如

public struct Int25
{
    private readonly int value;
    // Constructor etc, and operators which always make sure the result
    // is within the appropriate range
}