C# implicit关键字的用法
implicit 关键字用于声明隐式的用户定义类型转换运算符。如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换。隐式转换可以通过消除不必要的类型转换来提高源代码的可读性。 但是,因为隐式转换不需要程序员将一种类型显式强制转换为另一种类型,所以使用隐式转换时必须格外小心,以免出现意外结果。 一般情况下,隐式转换运算符应当从不引发异常并且从不丢失信息,以便可以在程序员不知晓的情况下安全使用它们。 如果转换运算符不能满足那些条件,则应将其标记为 explicit。
举个例子
class A{public A(float f){p = f;}public float p { get; }public static implicit operator A(float f){return new A(f);}public static implicit operator float(A a){return a.p;}}
//初始化构造函数A a = new A(100.12345f);//把a对象赋值给f,其实这个时候float已经被重载运算了所以不会报错float f = a;//把30赋值给a2对象的时候,A类已被重载了A a2 = 30;richTextBox1.Text += "f是:" + f + "\n";richTextBox1.Text += "a2.p是:" + a2.p + "\n";
得到的结果是
f是:100.1235
a2.p是:30
总结:连续介绍了三个关键字operator搭配implicit和explicit,重载运算,类型转换的过程当中都离不开static,explicit需要强制转换而implicit隐试转换类型。
C# implicit关键字的用法相关推荐
- scala implicit 关键字用法总结
综述 implicit 关键字是scala中一个比较有特点的关键字,他保证了scala在很多时候没有一些不必要的代码冗余,使得scala在很多时候看起来更加简洁,同时使得scala的一些库在设计的时候 ...
- java关键字的用法_JAVA常用关键字及其用法简要说明
JA V A常用关键字及其用法简要说明Abstract抽象的一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承.一个抽象类可以使用抽象方法,抽象方法不需要实现 ...
- 【转载】register、volatile、restrict 三关键字的用法
原文地址:register.volatile.restrict 三关键字的用法 – RaymondAmos的技术专栏 – CSDN博客. register 使用修饰符register声明的变量属于寄存 ...
- .Net 基础new关键字的用法
一.new的基本功能 一般说来,new关键字在.net中用于以下四个场合. 作为运算符,用于创建对象和调用构造函数,范围用得最多吧. 实现多态. 作为修饰符,用于向基类成员隐藏继承类成员,一般继承情况 ...
- java编程里的values怎么使用,详解Java编程中super关键字的用法
这篇文章主要介绍了Java编程中this与super关键字的用法,包括从内存结构方面分析super的作用域,需要的朋友可以参考下 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程 ...
- escape mysql_MySQL中ESCAPE关键字的用法详解
MySQL转义 转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义. MySQL中,转义字符以"" ...
- __declspec关键字详细用法
__declspec关键字详细用法 2009-01-21 16:23 __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式.其它的有关存储方式的修饰符如static与ext ...
- java instanceof 动态_Java关键字instanceof用法及实现策略
instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为: boolean result = obj instanceof Class 其中 obj 为一 ...
- Java this 关键字的用法
this 关键字的用法 this 在类中就是代表当前对象,可以通过 this 关键字完成当前 对象的成员属性.成员方法和构造方法的调用. 那么何时用 this? 当在定义类中的方法时,如果需要调用该类 ...
最新文章
- 用circlize包绘制circos-plot
- Python-Pandas 如何shuffle(打乱)数据?
- spring boot配置druid
- 一个网络管理员应该掌握的mysql管理命令
- Lammps 问题集锦
- usb-to-isp-for-stm32
- 叫你两招编辑PDF文档的方法
- 如何删除以横线“-”开头的文件
- 深度学习(14)TensorFlow高阶操作三: 张量排序
- 【转贴】想应聘的瞧仔细了:HW分析大全
- 简单Android app开发_如何简单快速开发外卖app?
- 质数的后代c语言,(信息学奥赛辅导)程序设计试题汇编(答案10)
- 【ZZ】栈和堆的区别
- 致运维——运维军团告诉你如何走过七年之痒
- 6.Linux性能诊断 --- 远程通信gRPC,kafka,docker
- python求解简单加密问题,实现对输入的密文加密
- java的启动信息_Java实现软件运行时启动信息窗口的方法
- FlashFTP教程
- 集成 Jira 与钉钉和企业微信通知
- DM7启动dmap服务报错问题