C# 为什么存在Convert.ToInt32(DateTime)?

C# 为什么存在Convert.ToInt32(DateTime)?,c#,.net,C#,.net,只是好奇,他说 调用此方法始终会引发 无效例外 那么,为什么框架中存在这种过载呢?它是否遵循某种模式?我认为为了向后兼容,最好删除重载并接收编译错误,而不是运行时异常。不过,我不记得以前的框架是否支持此方法。我认为IConvertable需要实现此功能。如您提供的链接中的文档所示: 备注 此方法留待将来使用 使用 他们只是还没有找到一个他们满意的或是必要的实现,但他们正计划这样做。我猜它只是调用了一个调用,而这个调用反过来又负责抛出该异常。有一天,它将进行转换,Convert.ToInt32(D

只是好奇,他说

调用此方法始终会引发 无效例外


那么,为什么框架中存在这种过载呢?它是否遵循某种模式?我认为为了向后兼容,最好删除重载并接收编译错误,而不是运行时异常。不过,我不记得以前的框架是否支持此方法。

我认为IConvertable需要实现此功能。

如您提供的链接中的文档所示:

备注

此方法留待将来使用 使用


他们只是还没有找到一个他们满意的或是必要的实现,但他们正计划这样做。

我猜它只是调用了一个调用,而这个调用反过来又负责抛出该异常。有一天,它将进行转换,
Convert.ToInt32(DateTime)
将在不做任何更改的情况下工作

他们只是把它放在文档中,没有什么特别的。如果不存在,则相同的条件可以是:

Convert.ToInt32(Object)

好吧,如果这个方法不存在,它将使用
Convert.ToInt32(Object)
重载,这可能会引发相同的异常。我很好奇你希望这个方法返回什么值?(毫秒不合适)另外,我相信它遵循的模式与你在
IConvertible
@Kirk中找到的方法相同,我不认为这是我的观点。我只是问为什么它会存在,即使你不能使用它……我知道,我的建议是他们遵循
IConvertible
中定义的方法模式。看一看:我认为静态方法对传递给它的参数调用实例方法,即Convert.ToInt32(IConvertible obj)@poindexter:Correct;是的。然而,它仍然不应该存在。@SLaks:有点同意。这样做很糟糕,但为了遵守合同,它必须这样做。您希望异常存在还是永远无法将DateTime转换为任何内容?它是一个静态方法。它不需要存在;没有关于静态的约定。这在我看来是非常正确的。Convert是一个助手类,用于调用标准值类型上的IConvertable实现。DateTime确实实现了它并抛出异常。唯一不抛出的是IConvertable.ToDateTime()。Convert并不是要求实现它,而是为了保持对称,它应该实现。直到那天,它只是一个很微妙的bug。此外,他们可以在以后添加过载。事实上,我在我的链接中看不到备注..嗯..但不管它在框架中有什么用,如果它现在没有任何用处?@Stan R.-你知道你是对的。我的浏览器自动将其发送到2.0版本。评论就在那里。我的假设是,由于实现是相同的,因此它在今天仍然是相关的。在回答你的另一个问题时,只有这个目标的实施团队能够如实地告诉你,但我怀疑其他答案没有太大遗漏。我同意,我只是说这就像引入“动态”2.0中的关键字,并说它是供将来使用的。这是没有道理的,对吗?@Stan R.-这种感觉真的取决于意图。我以前在接口中放过方法实现需求,我不打算立即实现,但我知道以后需要。当我添加这些实现时,我很高兴为它做了准备。我想说,它的敏感性最终归结为意图。他们真的打算实现它吗?还是他们只是在戏弄我们,满足一些不必要的接口约束?这不是同一个条件。你可以将字符串传递给ToInt32(对象),这会起作用,但对我来说不是DateTime,这是有意义的,但他们有一个明显的重载方法不起作用。