Convert.ToDateTime(bool)有什么意义?
我昨晚正在为我正在进行的系统做一些类型转换例程。 其中一个转换涉及将字符串值转换为DateTime等效值。
在执行此操作时,我注意到Convert.ToDateTime()方法有一个接受布尔参数的重载。
第一个问题? 在什么情况下这可能有用?
我进一步尝试在QuickWatch中执行该方法。 无论哪种方式(true或false),例程都返回InvalidCastException。
第二个问题? 为什么这种方法在这里呢?
编辑
伙计们,谢谢你的回答。 从合同的角度来看,我可以看出它是多么合理,但核心框架包括以下方法似乎很奇怪:
- 永远不会工作
- 更糟糕的是,当有人试图调用它时,实际上会抛出exception。
这有点像制造一辆装有控制装置的汽车,可以在使用时主动阻止您的车辆工作。
这是有道理的,因为ToDateTime
是bool
实现的IConvertible
接口的一部分。 如果您查看reflection器,您将看到它抛出InvalidCastException
。
更新 (来自Convert
):
public static DateTime ToDateTime(bool value) { return ((IConvertible) value).ToDateTime(null); }
我认为这是完整性的,并且在使用bool对象调用Convert.ToDateTime时会得到明确的InvalidCastException。
如果查看Convert的所有成员,您可以看到已包含重载以接受转换到每个其他基本类型的所有基本类型,并且在没有合理转换时抛出InvalidCastExceptions。
我猜他们认为这比没有那里的重载更有意义。
如果仔细观察, 大多数重载都是无效的,并会抛出InvalidCastException
。
它必须实现所有的强制转换,因为它实现了IConvertible
,这是正确执行它的唯一方法。