implicit 详解
来源:互联网 发布:centos关闭iptables 编辑:程序博客网 时间:2024/05/21 00:54
用于声明隐式的用户定义类型转换运算符。 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换。
示例
C#
class Digit{ public Digit(double d) { val = d; } public double val; // ...other members // User-defined conversion from Digit to double public static implicit operator double(Digit d) { return d.val; } // User-defined conversion from double to Digit public static implicit operator Digit(double d) { return new Digit(d); }}class Program{ static void Main(string[] args) { Digit dig = new Digit(7); //This call invokes the implicit "double" operator double num = dig; //This call invokes the implicit "Digit" operator Digit dig2 = 12; Console.WriteLine("num = {0} dig2 = {1}", num, dig2.val); Console.ReadLine(); }}
隐式转换可以通过消除不必要的强制转换来提高源代码的可读性。 但是,因为隐式转换不需要程序员将一种类型显式强制转换为另一种类型,所以使用隐式转换时必须格外小心,以免出现意外结果。 一般情况下,隐式转换运算符应当从不引发异常并且从不丢失信息,以便可以在程序员不知晓的情况下安全使用它们。 如果转换运算符不能满足那些条件,则应将其标记为 explicit
。 有关详细信息,请参阅使用转换运算符。
阅读全文
0 0
- implicit 详解
- C# explicti和implicit详解
- implicit
- scala 隐式详解(implicit关键字)
- 【Spark-Scala语法】implicit(隐式转换)关键字详解
- 关键字-implicit
- Scala implicit
- Scala implicit
- oauth:implicit
- Scala implicit
- Implicit conversions
- Scala implicit
- scala implicit
- Scala implicit
- scala implicit
- explicit & implicit
- 工作流模式详解之流程控制模式(11)——Implicit Termination
- 工作流模式详解之流程控制模式(11)——Implicit Termination
- webdriver+ant+jenkins自动化测试实践
- 我的easyui的正则表达式笔记
- 抛开flash,自己开发实现C++ RTMP直播流播放器
- Leetcode 145. Binary Tree Postorder Traversal
- DMA-BUF API使用指南
- implicit 详解
- AsyncTask 异步任务基本使用--下载视频
- [bzoj1877][SDOI2009]晨跑
- 亿级流量电商详情页系统的大型高并发与高可用缓存架构实战
- Camera app 分析(二)打开相机和预览过程
- UITableViewCell 消除右侧区域空白
- 去掉git diff在文件属性变化时候的比较
- 2017年6月22号JiaDu科技两轮面试笔记
- optimal stopping决策问题