[英]Convert.ToDateTime(D) compared to (DateTime)D
如果我有一个值D并要确保它是datetime类型,那么以下内容之间有区别吗?
DateTime dtm = Convert.ToDateTime(D)
DateTime dtm = (DateTime)D
1是转换,而2是强制转换? (我认为在某些方面2是较轻的操作?)
我什么时候应该使用1而不是2?
编辑
(问题的背景)
D来自DataTable
的单元格。 我正在做的是找到任何日期的单元格(通过datatable.columnname
),然后将ToOADate
函数应用于结果,然后再将其移至xl。 因此,如果dr
是我的DataRowView
那么我可以选择以下两种方法之一:
//Convert
DateTime dtm;
dtm = Convert.ToDateTime(dr[i - 1]);
xlWorkSheet.Cells[rowCount, i].value = dtm.ToOADate();
//Cast
DateTime dtm;
dtm = (DateTime)dr[i - 1];
xlWorkSheet.Cells[rowCount, i].value = dtm.ToOADate();
Convert.ToDateTime
具有多个重载,这些重载会将其他类型转换为DateTime
。 将非DateTime的实例转换为DateTime实例时,应使用它。 您还可以使用DateTime.Parse
和DateTime.TryParse
(如果您尝试解析字符串表示形式)。
(DateTime)D
尝试将实例直接转换为DateTime
。 如果该实例在调用之前还不是DateTime
,则将引发异常。
通过使用“转换”类,您实际上可以在不同类型之间进行转换。 例如,您可以将String转换为DateTime。 强制转换仅适用于相同类型。 因此,您不能将String强制转换为Int32,因为这会引发强制转换异常。
关于您的示例:如果D的内容始终为DateTime类型,则应首选转换,因为转换非常快。 如果您不知道D里面是什么类型(也许是因为它是对象类型),您可能希望更喜欢转换它,因为它比普通转换更优雅,因为此方法还允许您通过String(日期)设置DateTime字符串)或Int32(刻度)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.