wordpress选项卡,青岛网站排名优化,百度竞价排名榜,广州网站建设 .超凡科技系列介绍简介【五分钟的dotnet】是一个利用您的碎片化时间来学习和丰富.net知识的博文系列。它所包含了.net体系中可能会涉及到的方方面面#xff0c;比如C#的小细节#xff0c;AspnetCore#xff0c;微服务中的.net知识等等。场景您可以在下班坐地铁的时候#xff0c;拿出… 系列介绍简介【五分钟的dotnet】是一个利用您的碎片化时间来学习和丰富.net知识的博文系列。它所包含了.net体系中可能会涉及到的方方面面比如C#的小细节AspnetCore微服务中的.net知识等等。场景您可以在下班坐地铁的时候拿出手机逛一逛博客园利用短短的五分钟完成阅读。诞生缘由曾经学过的内容可能过不了多久就忘了我们需要一些文章来帮我们查漏补缺。太长篇幅的文章看着滚动条就害怕了我们可能更期望文字少的文章。.net体系的内容太多了平时也不知道该学哪些我们可能需要一点点知识线索。文章质量当然并不意味着它篇幅短就质量差。所谓麻雀虽小五脏俱全我们会尽可能保证利用最少的文字去详细的阐述内容。正文好吧直接开们见山来介绍今天的主角Explicit 和 Implicit。我记得我第一次见到这两个关键字还是在一次C#基础测试中。当时已经入C#的坑有两年多了吧自认为基础的题应该不在话下吧。然后小手一点视频网页上的进行测试按钮请听题“请问Explicit的作用是什么”。我“%…………这他喵的什么东西是C#的东西”。后来在公司问了一些老鸟好像大家也并不知道这两个关键字毕竟它和static、operator这些大佬比起来真的太不显眼了。它到底是个什么东西先来直接看一下msdn对它的解释吧:复制代码explicit 关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符是的它就是一个类型转换的语法糖。explicit 与 Implicit的作用其实是一样的它们之间的区别其实仅仅是显示转换和隐式转换的区别。来看它的用途这是我在项目中用到的一处场景我建立了一个时间段类里面包含了时间段的开始时间和结束时间。代码大致是酱紫:复制代码public class DateTimeRange
{public DateTime StartTime { get; set; }public DateTime EndTime { get; set; }public DateTimeRange(DateTime startTime, DateTime endTime){StartTime startTime;EndTime endTime;}
}在实际的使用场景中我们项目里往往会去获取这个时间段类的小时数。复制代码 (timeRange.EndTime - timeRange.StartTime).TotalHours;是的一开始我们就是酱紫写的。但是写起来很不爽每次都要复制N次。然后提取成了一个方法GetRangeHours()。但是你懂的一旦程序员懒起来它会连GetRangeHours都不想写虽然VS会给你提示一般只需要按两三次键盘。所以后来就有了这个版本复制代码public class DateTimeRange
{public DateTime StartTime { get; set; }public DateTime EndTime { get; set; }public DateTimeRange(DateTime startTime, DateTime endTime){StartTime startTime;EndTime endTime;}//operator 后面跟需要转换的类型public static implicit operator double(DateTimeRange timeRange){return (timeRange.EndTime - timeRange.StartTime).TotalHours;}
}然后使用起来就成了这样:复制代码double hours timeRange;我*就是这么洒脱。如果不懂这个关键字的同事阅读到这儿它可能还会很懵逼“我擦这个类型明明不是那个类型啊那个类型又怎么成了这个类型它们怎么还能等于起来……………………”。此时的你只能对他微微一笑。想一想你会在什么场景使用该关键字呢DTO转换已有代码不能变更只能扩展…………结束implicit和Explicit都是起到类型转换的作用它们的区别是转换的时候一个需要显式转换而已刚才我们那个场景用了隐式转换如果是显式转换的话就需要 double hours (DateTimeRange)timeRange; 来写了。该关键字只能在类内部使用哦放心强大的VS会给你提示。希望本篇文章没有花费您太长的阅读时间。来波关注咱们下次再见(ง •_•)ง