C# 窄化数值的强制转换问题

如果从一个较大类型变量强制转换成一个较小类型,比如从Long转换成Int,怎样才能妥善处理可能造成的数据丢失问题。

Checked方法是最简单的一种方法,代码如下:

public void UseChecked( long a, long b)
... {
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(
" 有数据丢失! " );

你可能感兴趣的:(C++,c,C#)