类型转换运算符

explicit和implicit用于声明用户定义的类型转换运算符,如果可以确保转换过程不会造成数据丢失,则可使用这两个关键字在用户定义的类型和其他类型之间进行转换。

explicit

明确的、明显的 称为:显式

implicit

含蓄的、暗含的 称为:隐式

它们解决什么问题?

考虑下面的需求,Person类有个字段age。我想使用 Person p = (Person) 18 来创建一个age为18的Person对象,怎么办?

更进一步,我想使用Person p = 18 来创建一个age为18的Person对象,怎么办?

实际应用

使用explicit(显式)和implicit(隐式)

class Person
{private int age;public int Age{get { return age; }set { age = value; }}public static explicit operator Person(int age){return new Person() { age = age, };}//public static implicit operator Person(int age)//{//    return new Person() { age = age, };//}
}class Program
{static void Main(string[] args){Person p = (Person)18; // 调用explicit//Person p = 18; // 调用implicit}
}

注意

二者不可同时提供,否则编译错误。这种语法其实是借鉴了C++的方式,并进行了扩展。一般情况下,请不要使用这种类型转换,因为不直观。

参考资料

implicit(C# 参考)

http://www.cnblogs.com/nzbbody/p/3519688.html

C#类型转换运算符之 explicit implicit相关推荐

  1. C++编程进阶8(最好不要实现类型转换运算符、单形参的构造函数与类型转换、临时对象与RVO)

    二十九.最好不要实现类型转换运算符 示例代码 class fraction { public:fraction(int numerator=0, int denominator=1);operator ...

  2. 区分一下强制类型转换运算符重载/赋值运算符重载/对象定义的赋值

    这三个名字可能很绕,看着也很不一样,但其实是三个很容易混淆的概念,并且经常在实际编程中遇到.这里拿出来比较一下. 首先是强制类型转换运算符的重载,作用是当前对象向其他类型的转换,常见的形式是 oper ...

  3. C++ 运算符重载(二) | 类型转换运算符,二义性问题

    文章目录 类型转换运算符 概念 避免过度使用类型转换函数 解决上述问题的方法 转换为 bool 显式的类型转换运算符 类型转换二义性 重载函数与类型转换结合导致的二义性 重载运算符与类型转换结合导致的 ...

  4. 重载new、delete和强制类型转换运算符()

    1.重载new和delete运算符 内存管理运算符new.new[].delete和delete[]也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就 ...

  5. C++编程进阶4(C++中的强制类型转换运算符、不要返回自定义类内部成员的指针,引用和迭代器)

    十五.C++中的强制类型转换 C语言中的强制类型转换方式有两种 T i = (T)exp; T i = T(exp); 这两种方式没有差别,C++中也支持这两种方式,但是和C++中的强制类型转换运算符 ...

  6. c#实现显式的用户自定义类型转换(关键字explicit operator)

    /*  * Created by SharpDevelop.  * User: noo  * Date: 2009-9-1  * Time: 13:41  *   * 系统预定义的数据类型,如int, ...

  7. c语言运算符类型转换,C语言中强制类型转换运算符的独特作用

    C语言中强制类型转换运算符的独特作用 在C语言中有一个强制类型转换运算符,它为C语言中的数据类型转换带来 (本文共2页) 阅读全文>> 在进行C++类的设计时,我们常常需要为类对象设计运算 ...

  8. C++ 强制类型转换运算符

    C++ 将类型名作为强制类型转换运算符. C++ 引入了四种功能不同的强制类型转换运算符以进行强制类型转换:static_cast.reinterpret_cast.const_cast 和 dyna ...

  9. C++ 重载强制类型转换运算符

    C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符. 类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数.经过适当重载后,(类型名)对象 ...

最新文章

  1. extjs关于jsonreader
  2. 了解下RDF 主要元素
  3. singleInstance和singleTask导致startActivityForResult回调失败
  4. 5、C语言面试笔试--数据组织--数组
  5. Leaflet中实现添加比例尺控件与自定义版权控件与链接
  6. Linux 定时任务crontab_014
  7. 概述 Linux系统扫描技术及安全防范
  8. 最暖的10个小故事,看完心都融化了
  9. python 匿名函数添加判断_Python之内置函数、匿名函数
  10. JavaScript:indexOf()方法
  11. gns3中怎么把服务器虚拟化,GNS3使用详解(gns3如何模拟ids)
  12. GNS3 添加思科交换机
  13. 软件项目管理期末复习(看这一篇就够了)
  14. 风力摆控制系统设计经验总结
  15. cisco是什么公司(cisco是什么公司新加坡)
  16. FPGA VerilogHDL语言 数字钟 按键消抖
  17. 信息学奥赛真题解析(笨鸟)
  18. 车载TBOX嵌入式设备软件的功能测试
  19. Android流量监控论文,Android平台流量监控软件的设计与实现
  20. matlab 雷达系统界面,基于Matlab的雷达系统仿真软件包设计与实现

热门文章

  1. 《Docker技术入门与实战》——2.4 本章小结
  2. 如何查看dede版本信息
  3. html5实现ios长按图标后进入图标排序及删除功能的效果
  4. UIView翻译 (参考)
  5. 不快乐工作场所的生存法则
  6. linux下网卡安装
  7. 人生,是一种无法抗拒的前进
  8. AWS — AWS 上的 NFV
  9. 5G URLLC 是 ToB 的关键
  10. (转载)Xcode中other linker flags的作用