加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使C#中的类,可以转换为DateTime?

发布时间:2020-12-15 03:59:55 所属栏目:百科 来源:网络整理
导读:我如何使类可以转换为DateTime.但是当我打包的时候,我需要投下我的课.例如: object date1 = new MyDateTime();DateTime date2 = (DateTime)date1; 我需要直接这个工作的例子. 我知道如何做,但我的方式将没有包装工作.我不知道有没有办法. 请帮忙. PS.我需要
我如何使类可以转换为DateTime.但是当我打包的时候,我需要投下我的课.例如:
object date1 = new MyDateTime();
DateTime date2 = (DateTime)date1;

我需要直接这个工作的例子.

我知道如何做,但我的方式将没有包装工作.我不知道有没有办法.

请帮忙.

PS.我需要直接将对象转换为DateTime.所以,MyDateTime必须先包装好.显式工作正常,但如果您有打包对象,则无效.而且它必须使用普通的铸造来铸造

(DateTime) (object) MyDateTime

解决方法

你似乎是继承,能够将派生类实例“存储”在基本类型的变量中,如下所示:
Stream s = new FileStream();

事实上,它是一个FileStream在引擎盖下不会丢失,只因为你指向它与Stream护目镜.

DateTime是一个结构体,结构继承不受支持 – 所以这是不可能的.

另一种替代方案是user-defined conversions的显式关键字(在语法上看起来像cast).这允许您至少在您的课程和DateTime之间交换更多的糖.

http://msdn.microsoft.com/en-us/library/xhbhezf4(v=vs.71).aspx

这可能看起来像:

class MyDateTime
{
    private DateTime _inner;

    public static explicit operator DateTime(MyDateTime mdt)
    {
        return mdt._inner;
    }
}

您可以使用对等隐式关键字执行相同操作:

public static implicit operator DateTime(MyDateTime mdt)
{
    return mdt._inner;
}

那么那么你就可以隐含地进行“投射”:

DateTime date = new MyDateTime();

另一个替代方法是使用自己的适配器类包装DateTime,内部使用DateTime,然后继承此类来创建MyDateTime.然后,您可以使用该适配器类,而不是在代码库中使用DateTime.

我已经看到类似的事情与SmartDateTime样式类,其中DateTime更好地了解null,如果它被设置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读