我有以下代码,将数字与 60000 相乘以将分钟转换为毫秒。我已经实现了溢出检查,如下所示。我仍然收到以下代码分析的警告。如何在不压制它的情况下克服这个警告?
警告:CA2233:更正“ApplicationSessionDAL.IsSessionExpired(short)”中操作“sessionExpiryValueInMinutes*60”中的潜在溢出
注意:TimeSpan.TotalMilliseconds 属性是double
数据类型
代码
public void IsSessionExpired(Int16 sessionExpiryValueInMinutes)
{
if (sessionExpiryValueInMinutes > (double.MaxValue) / 60000)
{
//Overflow check
throw new ArgumentOutOfRangeException("sessionExpiryValueInMinutes");
}
else
{
//int milliSecondsValue = sessionExpiryValueInMinutes * 60 * 1000;
DateTime lastAccessTime = new DateTime(2013, 1, 1);
TimeSpan elapsedTime = (DateTime.Now - lastAccessTime);
if (elapsedTime.TotalMilliseconds > (sessionExpiryValueInMinutes * 60 * 1000))
{
bool isTimeExpired = true;
}
}
}
参考