为什么 DateTime.ToDateTime( ) 不能编译?

4

这是关于此问题的跟进,我试图在我的答案中解释但失败了。

DateTime实现了IConvertible接口。您可以证明这一点,因为

IConvertible dt = new DateTime();

编译没有问题。

您可以编写以下代码,且无编译错误。

IConvertible dt = new DateTime();
dt.ToDateTime(val);

然而,如果您编写下一个代码片段,它不会编译。
DateTime dt = new DateTime();
dt.ToDateTime(val);

'System.DateTime'不包含'ToDateTime'的定义。

如果DateTime实现了接口,为什么不能在DateTime上调用方法,除非它被转换为IConvertible?

1个回答

11

由于DateTime显式实现了IConvertible接口 - 这个方法在MSDN的显式接口实现部分中列出。以下是它的实现方式:

DateTime IConvertible.ToDateTime(IFormatProvider provider)
{
    return this;
}

你应该将 DateTime 转换为 IConvertible

DateTime dt = new DateTime();
var result = ((IConvertible)dt).ToDateTime(val);

请参阅C# 编程指南:显式接口实现


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接