C# 获取算术溢出的最大值
是否有一种内置的方法来获取算术溢出的最大值 我需要的是:C# 获取算术溢出的最大值,c#,integer-overflow,arithmetic-expressions,integer-arithmetic,overflowexception,C#,Integer Overflow,Arithmetic Expressions,Integer Arithmetic,Overflowexception,是否有一种内置的方法来获取算术溢出的最大值 我需要的是: var val = byte.MaxValue + 1; //should be rounded down to byte.MaxValue MyByteProperty = val; 另外,我知道我可以通过将其包装为一个checked表达式来实现这一点,我的问题是该语言或BCL中是否有内置方式。有checked和unchecked关键字,它们指示在发生溢出时是否会引发异常: try { MyByteProperty = ch
var val = byte.MaxValue + 1;
//should be rounded down to byte.MaxValue
MyByteProperty = val;
另外,我知道我可以通过将其包装为一个
checked
表达式来实现这一点,我的问题是该语言或BCL中是否有内置方式。有checked
和unchecked
关键字,它们指示在发生溢出时是否会引发异常:
try
{
MyByteProperty = checked(byte.MaxValue + 1);
}
catch (System.OverflowException e)
{
MyByteProperty = byte.MaxValue;
}
我认为您正在寻找所谓的“饱和加法”。您正在寻找的是所谓的饱和算术,并且对于内置类型和运算符不可用,因为这将与程序员期望这些行为的方式相冲突。我知道这一点。我的问题是,是否有一种内置的方式可以做到这一点。这种内置方式还不够吗?@patrickhoffman举例来说,这种构造可以说比例如
MyByteProperty=val>byte.MaxValue要详细得多?byte.MaxValue:val
,但即使您必须手动执行每个赋值/计算,而不是内置的(我认为不存在)。