首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Convert.ToDateTime(bool)的意义是什么?

Convert.ToDateTime(bool)的意义是什么?
EN

Stack Overflow用户
提问于 2010-04-22 17:24:13
回答 3查看 680关注 0票数 20

我昨晚为我正在工作的一个系统做了一些类型转换例程。其中一种转换是将字符串值转换为DateTime等效值。

在执行此操作时,我注意到Convert.ToDateTime()方法有一个接受布尔参数的重载。

第一个问题?在什么情况下这可能是有用的?

我更进一步,尝试在QuickWatch中执行该方法。无论哪种方式( true或false ),例程都会返回InvalidCastException。

第二个问题?为什么这种方法会出现在这里?

编辑

谢谢你们的回答,伙计们。我可以从合同的角度看它是如何有意义的,但核心框架包括以下方法看起来确实很奇怪:

  • 永远不会比
  • 更糟糕,当有人试图调用它时,它实际上会抛出一个异常。

这有点像有人制造一辆装有控制装置的汽车,这些控制装置在使用时会主动阻止车辆工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-22 17:27:31

这是有意义的,因为ToDateTime是由bool实现的IConvertible接口的一部分。如果你查看反射器,你会发现它抛出了一个InvalidCastException

更新(来自Convert):

public static DateTime ToDateTime(bool value)
{
    return ((IConvertible) value).ToDateTime(null);
}
票数 6
EN

Stack Overflow用户

发布于 2010-04-22 17:31:23

我认为它是为了完整性而存在的,当你用一个布尔值对象调用Convert.ToDateTime时,你会得到一个显式的InvalidCastException。

如果查看Convert的所有成员,就会发现已经包含了重载以接受所有基本类型,以便转换为其他基本类型中的每一个,当没有合理的转换时,会抛出InvalidCastExceptions。

我猜他们认为这会比根本不存在重载更有意义。

票数 4
EN

Stack Overflow用户

发布于 2010-04-22 17:28:26

如果仔细观察,重载的是无效的,并将抛出InvalidCastException

它必须实现所有的强制转换,因为它实现了IConvertible,这是正确执行它的唯一方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2689572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档