分をミリ秒に変換するために、数値を 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;
}
}
}
参考文献