【发布时间】:2018-10-17 09:35:08
【问题描述】:
我在维护一个已有的项目,发现这行代码:
Datetime someDate = ....;
var anotherDateTime = Convert.ToDateTime(someDate);
一开始,我以为someDate会通过隐式调用ToString方法转换为字符串,但我错了。当我在方法上按 F12 时,我在 System.Convert 类中看到了该方法的定义,如下所示:
// Summary: Returns the specified System.DateTime object; no actual conversion is performed.
// Parameters:
// value: A date and time value.
// Returns:
// value is returned unchanged.
public static DateTime ToDateTime(DateTime value);
首先为什么.NET框架首先有这样的方法,因为文档说这个方法什么都不做?
第二当我重构代码时,我可以安全地移除对该方法的调用而不影响行为吗?
【问题讨论】:
-
在早期的 .NET 版本中常用来实现后期绑定,在 Linq、EF 和 dynamic 使这项工作变得更容易之前。例如,从 dbase 表行映射数据,dbase 提供程序可能会根据列类型提供 DateTime。省略 Convert 方法会使这样的代码太痛苦。