C#类型转换运算符之 explicit implicit
类型转换运算符
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相关推荐
- C++编程进阶8(最好不要实现类型转换运算符、单形参的构造函数与类型转换、临时对象与RVO)
二十九.最好不要实现类型转换运算符 示例代码 class fraction { public:fraction(int numerator=0, int denominator=1);operator ...
- 区分一下强制类型转换运算符重载/赋值运算符重载/对象定义的赋值
这三个名字可能很绕,看着也很不一样,但其实是三个很容易混淆的概念,并且经常在实际编程中遇到.这里拿出来比较一下. 首先是强制类型转换运算符的重载,作用是当前对象向其他类型的转换,常见的形式是 oper ...
- C++ 运算符重载(二) | 类型转换运算符,二义性问题
文章目录 类型转换运算符 概念 避免过度使用类型转换函数 解决上述问题的方法 转换为 bool 显式的类型转换运算符 类型转换二义性 重载函数与类型转换结合导致的二义性 重载运算符与类型转换结合导致的 ...
- 重载new、delete和强制类型转换运算符()
1.重载new和delete运算符 内存管理运算符new.new[].delete和delete[]也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就 ...
- C++编程进阶4(C++中的强制类型转换运算符、不要返回自定义类内部成员的指针,引用和迭代器)
十五.C++中的强制类型转换 C语言中的强制类型转换方式有两种 T i = (T)exp; T i = T(exp); 这两种方式没有差别,C++中也支持这两种方式,但是和C++中的强制类型转换运算符 ...
- c#实现显式的用户自定义类型转换(关键字explicit operator)
/* * Created by SharpDevelop. * User: noo * Date: 2009-9-1 * Time: 13:41 * * 系统预定义的数据类型,如int, ...
- c语言运算符类型转换,C语言中强制类型转换运算符的独特作用
C语言中强制类型转换运算符的独特作用 在C语言中有一个强制类型转换运算符,它为C语言中的数据类型转换带来 (本文共2页) 阅读全文>> 在进行C++类的设计时,我们常常需要为类对象设计运算 ...
- C++ 强制类型转换运算符
C++ 将类型名作为强制类型转换运算符. C++ 引入了四种功能不同的强制类型转换运算符以进行强制类型转换:static_cast.reinterpret_cast.const_cast 和 dyna ...
- C++ 重载强制类型转换运算符
C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符. 类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数.经过适当重载后,(类型名)对象 ...
最新文章
- extjs关于jsonreader
- 了解下RDF 主要元素
- singleInstance和singleTask导致startActivityForResult回调失败
- 5、C语言面试笔试--数据组织--数组
- Leaflet中实现添加比例尺控件与自定义版权控件与链接
- Linux 定时任务crontab_014
- 概述 Linux系统扫描技术及安全防范
- 最暖的10个小故事,看完心都融化了
- python 匿名函数添加判断_Python之内置函数、匿名函数
- JavaScript:indexOf()方法
- gns3中怎么把服务器虚拟化,GNS3使用详解(gns3如何模拟ids)
- GNS3 添加思科交换机
- 软件项目管理期末复习(看这一篇就够了)
- 风力摆控制系统设计经验总结
- cisco是什么公司(cisco是什么公司新加坡)
- FPGA VerilogHDL语言 数字钟 按键消抖
- 信息学奥赛真题解析(笨鸟)
- 车载TBOX嵌入式设备软件的功能测试
- Android流量监控论文,Android平台流量监控软件的设计与实现
- matlab 雷达系统界面,基于Matlab的雷达系统仿真软件包设计与实现