如果我的值 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();
答案 0 :(得分:6)
Convert.ToDateTime
有几个重载会将其他类型转换为DateTime
。当您将不是DateTime的实例转换为DateTime实例时,应该使用它。您还可以使用DateTime.Parse
和DateTime.TryParse
(如果您尝试解析字符串表示形式)。
(DateTime)D
尝试将实例直接转换为DateTime
。如果实例在调用之前不是DateTime
,则会抛出异常。
答案 1 :(得分:1)
通过使用“转换”类,您实际上可以在不同类型之间进行转换。例如。您可以将String转换为DateTime。 转换仅适用于相同类型。因此,您无法将String强制转换为Int32,因为这会引发强制转换异常。
关于你的例子: 如果D的内容始终是DateTime类型,那么您应该更喜欢使用它,因为强制转换非常快。 如果您不知道D内部的类型(可能因为它是Object类型),您可能希望转换它,因为这比仅仅普通转换更优雅,因为此方法允许您也按字符串设置DateTime(日期String)或Int32(ticks)。