【问题标题】:Why does DateTime.ToDateTime( ) not compile?为什么 DateTime.ToDateTime( ) 不能编译?
【发布时间】:2014-01-23 11:33:51
【问题描述】:

这是this question 的后续行动,我尝试过但未能在我的回答中解释。

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?

【问题讨论】:

    标签: c# .net interface


    【解决方案1】:

    因为DateTime 显式实现了IConvertible 接口 - 此方法列在 MSDN 上的Explicit Interface Implementations 部分中。以下是它的实现方式:

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

    您应该将DateTime 转换为IConvertible

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

    Explicit Interface Implementation (C# Programming Guide)

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多