C#中两个关键字 Explicit 和 Implicit,你知道吗?
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
简介 五分钟的.NET是一个利用您的碎片化时间来学习和丰富.NET知识的博文系列。 它所包含了.NET体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.NET知识等等。 场景 您可以在下班坐地铁的时候,拿出手机逛一逛博客园,利用短短的五分钟完成阅读。 诞生缘由
文章质量 当然,并不意味着它篇幅短就质量差。所谓麻雀虽小五脏俱全,我们会尽可能保证利用最少的文字去详细的阐述内容。 正文 好吧,直接开们见山来介绍今天的主角:Explicit 和 Implicit。 我记得我第一次见到这两个关键字还是在一次C#基础测试中。当时已经入C#的坑有两年多了吧,自认为基础的题应该不在话下吧。 然后小手一点视频网页上的进行测试按钮,请听题:“请问Explicit的作用是什么?”。我:“%……&……,这他喵的什么东西?是C#的东西?”。 后来在公司问了一些老鸟,好像大家也并不知道这两个关键字,毕竟它和static、operator这些大佬比起来,真的太不显眼了。 它到底是个什么东西 先来直接看一下msdn对它的解释吧:
是的,它就是一个类型转换的语法糖。explicit 与 Implicit的作用其实是一样的,它们之间的区别其实仅仅是显示转换和隐式转换的区别。 来看它的用途 这是我在项目中用到的一处场景,我建立了一个时间段类,里面包含了时间段的开始时间和结束时间。代码大致是酱紫:
在实际的使用场景中,我们项目里往往会去获取这个时间段类的小时数。
是的,一开始我们就是酱紫写的。但是写起来很不爽,每次都要复制N次。然后提取成了一个方法,GetRangeHours()。但是你懂的,一旦程序员懒起来,它会连GetRangeHours都不想写(虽然VS会给你提示,一般只需要按两三次键盘)。所以后来就有了这个版本:
然后使用起来就成了这样:
我*,就是这么洒脱。如果不懂这个关键字的同事阅读到这儿,它可能还会很懵逼:“我擦,这个类型明明不是那个类型啊,那个类型又怎么成了这个类型,它们怎么还能等于起来……………………”。此时的你,只能对他微微一笑。 想一想你会在什么场景使用该关键字呢?DTO转换?已有代码不能变更只能扩展?………… 结束 implicit和Explicit都是起到类型转换的作用,它们的区别是转换的时候一个需要显式转换而已,刚才我们那个场景用了隐式转换,如果是显式转换的话就需要 double hours = (double)timeRange; 来写了。 该关键字只能在类内部使用哦,放心,强大的VS会给你提示。 -EOF - 该文章在 2024/10/10 17:54:12 编辑过 |
关键字查询
相关文章
正在查询... |