gpt4 book ai didi

c# - 为什么 c# 不允许将 SqlDatetime.MinValue 分配给日期时间但允许比较

转载 作者:行者123 更新时间:2023-11-30 15:25:40 26 4
gpt4 key购买 nike

以下代码使用比较 运算符可以正常编译。

If(dateTimeVariable > SqlDateTime.MinValue) //compiles Ok. dateTimeVariable is of type DateTime
{
}

但是,下面的代码编译失败。

DateTime dateTimeVariable=SqlDateTime.MinValue;
//Throws exception , cannot convert source type SqlDateTime to DateTime. Which is obvious.

我的问题是为什么SqlDateTimeDatetime 类型之间允许比较 而不是赋值。 (除非 比较 操作符正在做一些隐式 转换。)

我猜我一定是遗漏了一些非常基本的东西。

最佳答案

SqlDateTime 中有一个隐式转换无需任何额外工作即可将 DateTime 转换为 SqlDateTime:

public static implicit operator SqlDateTime(DateTime value)
{
return new SqlDateTime(value);
}

// SqlDateTime mySqlDate = DateTime.Now

必须发生的是 dateTimeVariable 正在从 DateTime 隐式转换为 SqlDateTime 以进行比较:

if (dateTimeVariable > SqlDateTime.MinValue)
{
// if dateTimeVariable, after conversion to an SqlDateTime, is greater than the
// SqlDateTime.MinValue, this code executes
}

但在下面的代码中,没有任何东西允许您简单地将 SqlDateTime 填充到 DateTime 变量中,因此它不允许这样做。

DateTime dateTimeVariable = SqlDateTime.MinValue;  // fails

转换你的初始值,它会编译好,但你有可能会丢失一些有值(value)的信息,这些信息是 SqlDateTime 但不是 DateTime 的一部分.

DateTime dateTimeVariable = (DateTime)SqlDateTime.MinValue;

关于c# - 为什么 c# 不允许将 SqlDatetime.MinValue 分配给日期时间但允许比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30610059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com