繁体   English   中英

Convert.ToDateTime(D)与(DateTime)D的比较

[英]Convert.ToDateTime(D) compared to (DateTime)D

如果我有一个值D并要确保它是datetime类型,那么以下内容之间有区别吗?

  1. DateTime dtm = Convert.ToDateTime(D)
  2. 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.ParseDateTime.TryParse (如果您尝试解析字符串表示形式)。

(DateTime)D尝试将实例直接转换为DateTime 如果该实例在调用之前还不是DateTime ,则将引发异常。

通过使用“转换”类,您实际上可以在不同类型之间进行转换。 例如,您可以将String转换为DateTime。 强制转换仅适用于相同类型。 因此,您不能将String强制转换为Int32,因为这会引发强制转换异常。

关于您的示例:如果D的内容始终为DateTime类型,则应首选转换,因为转换非常快。 如果您不知道D里面是什么类型(也许是因为它是对象类型),您可能希望更喜欢转换它,因为它比普通转换更优雅,因为此方法还允许您通过String(日期)设置DateTime字符串)或Int32(刻度)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM