• 用implicit和explicit打通两种类型


      我们知道,在c#中,如果两个类型没有继承关系 ,是不能相互值赋的,但有两个关键字implicit和explicit,可以让 Date date = DateTime.Now这样的赋值成为可能。

    注:c#是没有Date类型的,但DateTime有Date属性 DateTime.Date,但这个属性本质上是个DateTime类型,只不过时间是00:00:00

    using System;
    using static System.Console;
    
    namespace KeyWordsDemo
    {
        class ImplicitAndExplicitDemo : IDemo
        {
            public void Run()
            {
                //把DateTime赋值 给Date
                Date date = DateTime.Parse("2030-01-01 12:12:12");
                WriteLine($"Date:{date}");
                WriteLine($"Year:{date.Year}");
                WriteLine($"Month:{date.Month}");
                WriteLine($"Day:{date.Day}");
    
                //把Date转成DateTime类型
                var datetime = (DateTime)date;
                WriteLine($"DateTime:{datetime}");
            }
    
            public struct Date
            {
                private DateTime _value;
                public int Year
                {
                    get
                    {
                        return _value.Year;
                    }
                }
                public int Month
                {
                    get
                    {
                        return _value.Month;
                    }
                }
                public int Day
                {
                    get
                    {
                        return _value.Day;
                    }
                }
                public static implicit operator Date(DateTime dateTime)
                {
                    var date = new Date();
                    date._value = dateTime;
                    return date;
                }
                public static explicit operator DateTime(Date date)
                {
                    return date._value.Date;
                }
                public override string ToString()
                {
                    return _value.ToString("yyyy/MM/dd");
                }
            }
        }
    }

      这里的Date只是简单封装,可根据自己的需求进行精确处理。

      Date date = DateTime.Parse("2030-01-01 12:12:12");会调用public static implicit operator Date(DateTime dateTime)方法。

      var datetime = (DateTime)date;会调用public static explicit operator DateTime(Date date)方法。

      implicit和explicit为我们又提供了一种“打通”两种类型的方式。

     

      想要更快更方便的了解相关知识,可以关注微信公众号 
     

     

     

     
  • 相关阅读:
    innobackupex备份命令输出
    Percona XtraBackup原理详解
    MongoDB性能分析工具mongostat
    MongoDB查看当前连接数
    事务、拦截器
    HttpServletResponse和HttpServletRequest的简单实用
    Maven环境配置
    SQL Server 时间戳与时间格式互相转换
    虚拟机、云主机、VPS 三者之间的区别
    Elasticsearch 空值过滤
  • 原文地址:https://www.cnblogs.com/ljknlb/p/15864259.html
Copyright © 2020-2023  润新知