用于声明隐式的用户定义类型转换运算符。它可以实现2个不同类的隐式转换 ,提高代码的可读性。但是需要注意使用隐式转换操作符之后,在编译时会跳过异常检查,所以隐式转换运算符应当从不引发异常并且从不丢失信息,否则在运行时会出现一些意想不到的问题。
案例1如下:

class Program{static void Main(string[] args){MyBool myBool = new MyBool();myBool.Init();if (myBool){Console.WriteLine("true");}else{Console.WriteLine("false");}Console.ReadKey();   }public class MyBool {public bool isExist = false;public void Init(){isExist = true;}public void Dispose(){isExist = false;}public static implicit operator bool(MyBool myBool){if (myBool == null)return false;return myBool.isExist;}}}

图中定义一个类MyBool
并在类中使用了implicit关键字讲将MyBool转换成bool
这样在判断类是否为空的时候可以使用if(MyBool)的方式
并且可以在隐式转换函数中添加自己的条件
比如图中加入了isExist的布尔变量,Init的时候设置true,Dispose设置为false
这样在if(MyBool)的时候 就可以知道该对象有没有调用过Init的函数了
既减少了代码量也可以保证对象能够使用

案例2如下:

class Program
{static void Main(string[] args){OtherClass otherClass = new OtherClass();otherClass.value = 1.5f;MyClass myClass = otherClass;Console.WriteLine(myClass.value);Console.ReadKey();}public class MyClass{public int value;public static implicit operator MyClass(OtherClass otherClass){MyClass myClass = new MyClass();myClass.value = (int)Math.Round(otherClass.value);return myClass;}public static implicit operator OtherClass(MyClass myClass){OtherClass otherClass = new OtherClass();otherClass.value = myClass.value;return otherClass;}}public class OtherClass{public float value;}
}

图中定义了MyClass和OtherClass 并且使用了关键字讲两个类互相进行了隐式转换,这样 假如我们把OtherClass 看成别人的类库里面的类 那样假如 我们要封装别人的类的话 除了继承外 还可以使用这种方式 ,这样优化代码量 并且继承的方式 可能会造成你这个类中有很多函数用不到而浪费 而这样写 可以自己封装一下你要用到的函数等

implicit 关键字相关推荐

  1. scala implicit 关键字用法总结

    综述 implicit 关键字是scala中一个比较有特点的关键字,他保证了scala在很多时候没有一些不必要的代码冗余,使得scala在很多时候看起来更加简洁,同时使得scala的一些库在设计的时候 ...

  2. C# implicit关键字的用法

    implicit 关键字用于声明隐式的用户定义类型转换运算符.如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换.隐式转换可以通过消除不必要的类型转换来提高 ...

  3. scala 隐式详解(implicit关键字)

    掌握implicit的用法是阅读spark源码的基础,也是学习scala其它的开源框架的关键,implicit 可分为: 隐式参数 隐式转换类型 隐式调用函数 1.隐式参数 当我们在定义方法时,可以把 ...

  4. .net转换关键字:operator、explicit与implicit

    operator.explicit与implicit 很少用到,但也不能不知道,发现这篇写很好,转一篇 operator operator 关键字用于在类或结构声明中声明运算符.运算符声明可以采用下列 ...

  5. C# 隐式转换关键字 implicit

    implicit 关键字用于声明隐式的用户定义类型转换运算符. 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 引用摘自:implicit(C# 参考 ...

  6. C# 自定义 implicit和explicit转换

    explicit 和 implicit 属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换 explicti 表示显式转换,如从 A -> B 必须进行强制类型转换(B = (B)A) ...

  7. 不忘本~explicit和implicit修饰符

    返回目录 部分内容来自MSDN implicit 关键字用于声明隐式的用户定义类型转换运算符.如果转换过程可以确保不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 1 cl ...

  8. C#中的Explicit和Implicit了解一下吧

    今天在研究公司项目框架的时候看到了下面的用法,public static implicit operator JsonData(int data);.貌似很久没用过这种隐式转换的写法了,因此重新温习一 ...

  9. 无法将类型int隐式转换为string_Scala implicit 隐式转换安全驾驶指南

    这篇短文将结合实例对隐式转换的各种场景进行解释和总结,希望看完的人能够安全驶过隐式转换这个大坑. 隐式转换函数 隐式转换函数有两种作用场景. 1 转换为期望类型:就是指一旦编译器看到X,但需要Y,就会 ...

最新文章

  1. iOS LLDB调试命令(Low Lever Debug)
  2. css/js压缩工具
  3. linux学习笔记-第一课-linux的历史,安装linux,远程连接
  4. 脐带血要不要保存?看了你就明白!
  5. 灰度图像--图像增强 非锐化掩蔽 (Unsharpening Mask) .
  6. ​KDD 2019 | 用户视角看世界:腾讯提出ConcepT概念挖掘系统,助力推荐搜索
  7. antd vue表单上传文件_vue+axios+antD的上传图片踩坑
  8. Quick BI v3.0版本全新起航——2018杭州云栖大会
  9. jacascript 立即执行函数(IIFE)与闭包
  10. 我和计算机比本领教案反思,《比本领》教学设计及反思
  11. python输入多组数据_Python3算法类多组数据输入输出格式
  12. 多线程模拟渡河 C语言 Linux
  13. Dev C++下载简介和安装
  14. 鲨鱼游戏/游戏测试实习面试
  15. 【牛客】3002 G-eli和字符串
  16. oracle的跨会话变量,oracle 回话环境变量 userenv ,oracle connetion context 会话环境 连接的会话环境...
  17. 3d视觉效果html,jQuery炫酷网页3D背景视觉差特效
  18. 硬件工程师--医疗器械
  19. 苹果开发者账号申请流程说明
  20. 如果使用PostGIS的ST_Area函数计算多边形面积

热门文章

  1. 弘辽科技:新品直通车要开人群吗?有什么优势吗?
  2. 重装系统后桌面只有一个回收站的解决方法
  3. linux手术后10年,正颌手术10年后遗症严重吗?
  4. 8. fastApi请求错误处理方式与示例
  5. AWS 中文入门开发教学 36- 连接MySQL - MySQL客户端工具
  6. 一天一道简单题目(2)
  7. 什么发行版的linux占资源较小,适合在任何地方使用的 Linux:15 个小型 Linux 发行版...
  8. 电脑配置,电脑购买必看,保姆级
  9. 【笔记】【Informatica】Informatica 资料库迁移步骤
  10. 数据结构 栈-链栈及基本操作