我们知道,在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赋值 给DateDate 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为我们又提供了一种“打通”两种类型的方式。

用implicit和explicit打通两种类型相关推荐

  1. (发现)问题才是推动创新的动力系列:两种类型硬币(均匀和非均匀)能否用第一次得正面朝上的概率推断“第一第二次依次获得正面反面情况”的概率?

    两种类型硬币(均匀和非均匀)能否用第一次得正概率推断,第一第二次依次获得正反概率? 2种硬币 均匀的 COIN1  正反概率(正0.5  反0.5) 非均匀的COIN2 (正0.9  反0.1) 问题 ...

  2. 设计一个处理两种类型地址的地址簿程序_编译器设计-符号表-中间代码生成

    编译器设计-符号表-中间代码生成 Compiler Design - Symbol Table Compiler - Intermediate Code Generation 一.Compiler D ...

  3. M.2 固态硬盘的两种类型:SATA 和 NVMe 的区别?

    参考 https://www.kingston.com.cn/cn/solutions/pc-performance/two-types-m2-vs-ssd 前言 在存储技术领域,当我们讨论 M.2 ...

  4. java类型转换答案,在java中支持两种类型的类型转换,自动类型转换和强制类型转换。父类转化为子类需要强制转换。...

    在java中支持两种类型的类型转换,自动类型转换和强制类型转换.父类转化为子类需要强制转换. 更多相关问题 计算机病毒通过()传染扩散得极快,危害最大. 当一个现象的数量由小变大,另一个现象的数量相反 ...

  5. 计算机不属于发明保护客体,如何判断两种类型的计算机程序发明能否成为专利保护客体?...

    如何判断两种类型的计算机程序发明能否成为专利保护客体?计算机程序类的发明可以根据处理和控制对象的不同划分为两种类型:控制和处理计算机外部对象的类型,以及控制和处理计算机内部对象的类型. 由于两者在技术 ...

  6. matlab将txt数据分类,MATLAB读取txt文件,txt里面有字符串和数值两种类型

    MATLAB读取txt文件,txt里面有字符串和数值两种类型 mip版  关注:96  答案:4  悬赏:30 解决时间 2021-01-29 08:48 已解决 2021-01-28 15:04 M ...

  7. 手机号段对应地区编码_什么是编码器?了解两种类型的编码器

    编码器提供反馈,以精确控制速度和位置.转子角位置是通过两个相差90度的方波和每转一圈发生的可选索引脉冲给出的.有多种技术可获得这些结果. 两种类型的编码器:光学和磁编码器 光学编码器 这种类型的编码器 ...

  8. Spring 让 LOB 数据操作变得简单易行,LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型

    http://www.ibm.com/developerworks/cn/java/j-lo-spring-lob/index.html 本文讲解了在 Spring 中处理 LOB 数据的原理和方法, ...

  9. c语言上11e2是实型常量吗,在C语言中的实型变量分为两种类型.doc

    在C语言中的实型变量分为两种类型.doc 第二章 练习题 一.填空题 1.在C语言中的实型变量分为两种类型,它们是float型和( )型. 2.若有定义:char c='\010';则变量c中包含的字 ...

最新文章

  1. 企业一般会用哪些软件来提高员工的工作效率?
  2. ACDream - Dynamic Inversions II
  3. Android 指纹调试流程(高通、MTK均适用)
  4. 返回指定月份的周列表 包含 周序号、开始日期、结束日期(不包含周末)
  5. 浅谈HTTPS以及Fiddler抓取HTTPS协议
  6. [Ljava.lang.String; cannot be cast to java.lang.String
  7. 分析方法的基础 — 2.业务与管理的拆分,破解难题的钥匙
  8. python调用库实现返回ping的时延_python在windows下实现ping操作并接收返回信息
  9. 带你了解HTTP协议(一)
  10. SQL:Mongoose在node中的应用
  11. SpringCloud平滑升级/优雅停机
  12. vue 父传子props
  13. Redis Zset的实现为什么用跳表,而不用平衡树?
  14. FCPX插件:屏幕分屏特效插件Stupid Raisins Split Pop
  15. java 字符串按小数点分割【问题剖析】
  16. c++语言 构造函数,C++中构造函数的写法
  17. 视频监控存储空间的算法
  18. 去掉CodeGear的Welcome page.
  19. 完整版H5社交聊天平台源码[完整数据库+完整文档教程]
  20. 程序员的《致女儿书》

热门文章

  1. Exchange Server 2003邮件服务器系统的基本部署思路
  2. python字典获取关联值_【Python实战12】使用字典关联数据
  3. python正则中如何匹配汉字以及encode(‘utf-8’)和decode(‘utf-8’)的互转
  4. supervisord的安装使用
  5. MyBatis缓存通俗易懂
  6. Timequest的波形窗口调出
  7. LeetCode Implement Queue using Stacks (数据结构)
  8. 三分钟学会缓存工具DiskLruCache
  9. (转)java中对集合对象list的几种循环访问总结
  10. jQuery banner切换插件