Nullable DateTime 设置它获取无效参数无法转换为 long
Nullable DateTime setting it getting invalid argument with cannot convert to long
为什么我需要像这样将 DateTime 设置为 Nullable?
DateTime? Err_Rpt_Tm = new DateTime?(DateTime.Now);
Console.WriteLine(Err_Rpt_Tm);
因为我觉得在 Linqpad 中执行此操作很奇怪
DateTime Err_Rpt_Tm = new DateTime(DateTime.Now);
我收到这个错误
The best overloaded method match for 'System.DateTime.DateTime(long)' has some invalid arguments
Argument 1: cannot convert from 'System.DateTime' to 'long'
- DateTime.Now 永远不会为空,所以我不明白是否需要可为空的 DateTime?
- 将 System.DateTime 转换为长???我明确设置 DateTime 变量 "Err_Rpt_Tm"
没有 DateTime 构造函数接受 DateTime 对象,尽管它有很长时间的构造函数,即 DateTime(long ticks) 并且错误提示要使用构造函数。
您可以直接将 DateTime.Now 赋值给 DateTime 对象,不需要构造函数。
DateTime Err_Rpt_Tm = DateTime.Now;
分配给 Nullable DateTime
DateTime? Err_Rpt_Tm = DateTime.Now;
DateTime?
是 Nullable<DateTime>
的缩写。让我们看看documentation on MSDN。在构造函数部分,唯一可用的构造函数是 Nullable<T>(T)
。这解释了为什么您的代码的第一部分可以编译。
在第二种情况下,您正在尝试初始化 DateTime
,并且 MSDN 清楚地表明没有接受类型 DateTime
的单个参数的构造函数。这就是为什么在第二种情况下会出现编译错误。
要解决此问题,您可以使用更简单的初始化形式:
DateTime? Err_Rpt_Tm = DateTime.Now;
DateTime Err_Rpt_Tm2 = DateTime.Now;
这是可能的,因为 Nullable<T>
实现了 operators 将可空类型与实际类型相互转换。
为什么我需要像这样将 DateTime 设置为 Nullable?
DateTime? Err_Rpt_Tm = new DateTime?(DateTime.Now);
Console.WriteLine(Err_Rpt_Tm);
因为我觉得在 Linqpad 中执行此操作很奇怪
DateTime Err_Rpt_Tm = new DateTime(DateTime.Now);
我收到这个错误
The best overloaded method match for 'System.DateTime.DateTime(long)' has some invalid arguments
Argument 1: cannot convert from 'System.DateTime' to 'long'
- DateTime.Now 永远不会为空,所以我不明白是否需要可为空的 DateTime?
- 将 System.DateTime 转换为长???我明确设置 DateTime 变量 "Err_Rpt_Tm"
没有 DateTime 构造函数接受 DateTime 对象,尽管它有很长时间的构造函数,即 DateTime(long ticks) 并且错误提示要使用构造函数。
您可以直接将 DateTime.Now 赋值给 DateTime 对象,不需要构造函数。
DateTime Err_Rpt_Tm = DateTime.Now;
分配给 Nullable DateTime
DateTime? Err_Rpt_Tm = DateTime.Now;
DateTime?
是 Nullable<DateTime>
的缩写。让我们看看documentation on MSDN。在构造函数部分,唯一可用的构造函数是 Nullable<T>(T)
。这解释了为什么您的代码的第一部分可以编译。
在第二种情况下,您正在尝试初始化 DateTime
,并且 MSDN 清楚地表明没有接受类型 DateTime
的单个参数的构造函数。这就是为什么在第二种情况下会出现编译错误。
要解决此问题,您可以使用更简单的初始化形式:
DateTime? Err_Rpt_Tm = DateTime.Now;
DateTime Err_Rpt_Tm2 = DateTime.Now;
这是可能的,因为 Nullable<T>
实现了 operators 将可空类型与实际类型相互转换。