当我将 DateTime 变量与 SqlDateTime.MinValue 进行比较时:
if (StartDate > SqlDateTime.MinValue)
{
// some code
}
如果 StartDate 为 < SqlDateTime.MinValue,我会得到以下运行时异常:
SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
这可以很容易地通过一个小的改变来解决:
if (StartDate > SqlDateTime.MinValue.Value)
{
// some code
}
我知道在第一个代码片段中我将苹果与橘子进行比较。我不明白的是异常消息。似乎我正在将 DateTime 值分配给 SqlDateTime 变量。
我错过了什么?
最佳答案
.NET native DateTime 类型(具体而言,它是一种结构)拥有比 SqlDateTime 数据类型所能支持的范围更广的可能值。更具体地说,DateTime 值的范围可以从 01/01/0000 到理论上的 12/31/9999。
当编译器试图强制比较类型时,它会尝试放置一个超出(在上下文中或在上下文中“之前”)SqlDateTime 支持的范围之外的 DateTime 值 (MinValue.Value) - 因此会发生溢出。
关于c# - 将 DateTime 与 SqlDateTime.MinValue 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40114222/