如果从一个较大类型变量强制转换成一个较小类型,比如从Long转换成Int,怎样才能妥善处理可能造成的数据丢失问题。
Checked方法是最简单的一种方法,代码如下:
public
void
UseChecked(
long
a,
long
b)
... {
Int32r=0;
try
...{
r=checked((Int32)(a+b));
}
catch(Exception)
...{
MessageBox.Show("溢出");
}
}
... {
Int32r=0;
try
...{
r=checked((Int32)(a+b));
}
catch(Exception)
...{
MessageBox.Show("溢出");
}
}
如果使用MaxValue和MinValue关键字,则可以在转换前进行有效的判断,从而避免数据丢失。
Int32r
=
65535
;
short s = 0 ;
if (r <= short .MaxValue && r >= short .MinValue)
... {
s=(short)r;
}
else
MessageBox.Show( " 有数据丢失! " );
short s = 0 ;
if (r <= short .MaxValue && r >= short .MinValue)
... {
s=(short)r;
}
else
MessageBox.Show( " 有数据丢失! " );