explicit和implicit的含义


Posted in 面试题 onNovember 15, 2012
explicit 和 implicit 属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换
explicti 表示显式转换,如从 A -> B 必须进行强制类型转换(B = (B)A)
implicit 表示隐式转换,如从 B -> A 只需直接赋值(A = B)
隐式转换可以让我们的代码看上去更漂亮、更简洁易懂,所以最好多使用 implicit 运算符。不过!如果对象本身在转换时会损失一些信息(如精度),那么我们只能使用 explicit 运算符,以便在编译期就能警告客户调用端
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example23
{
class Program
{
//本例灵感来源于大话西游经典台词“神仙?妖怪?”–主要是我实在想不出什么好例子了
class Immortal
{
public string name;
public Immortal(string Name)
{
name = Name;
}
public static implicit operator Monster(Immortal value)
{
return new Monster(value.name + “:神仙变妖怪?偷偷下凡即可。。。”);
}
}
class Monster
{
public string name;
public Monster(string Name)
{
name = Name;
}
public static explicit operator Immortal(Monster value)
{
return new Immortal(value.name + “:妖怪想当神仙?再去修炼五百年!”);
}
}
static void Main(string[] args)
{
Immortal tmpImmortal = new Immortal(“紫霞仙子”);
//隐式转换
Monster tmpObj1 = tmpImmortal;
Console.WriteLine(tmpObj1.name);
Monster tmpMonster = new Monster(“孙悟空”);
//显式转换
Immortal tmpObj2 = (Immortal)tmpMonster;
Console.WriteLine(tmpObj2.name);
Console.ReadLine();
}
}
}
结果:
紫霞仙子:神仙变妖怪?偷偷下凡即可。。。
孙悟空:妖怪想当神仙?再去修炼五百年!

Tags in this post...

面试题 相关文章推荐
PHP笔试题
Feb 22 面试题
一份比较全的PHP面试题
Jul 29 面试题
介绍一下Transact-SQL中SPACE函数的用法
Sep 01 面试题
什么是SQL Server的确定性函数和不确定性函数
Aug 04 面试题
网络工程师面试(三木通信技术有限公司)
Jun 05 面试题
Can a struct inherit from another class? (结构体能继承类吗)
Jul 22 面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
Oct 29 面试题
params有什么用
Mar 01 面试题
系统管理员的职责包括那些?管理的对象是什么?
Sep 20 面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
Jun 20 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
Oct 31 面试题
Servlet方面面试题
Sep 28 面试题
C#如何调用Word并打开一个Word文档
May 08 #面试题
C# .NET面试题
Nov 28 #面试题
初级软件工程师面试题 Junior Software Engineer Interview
Feb 15 #面试题
params有什么用
Mar 01 #面试题
Does C# support multiple inheritance? (C#支持多重继承吗)
Jan 04 #面试题
西安当代医院管理研究院笔试题
Dec 11 #面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
Oct 29 #面试题
You might like
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
js中this的用法实例分析
2015/01/10 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
js调用设备摄像头的方法
2018/07/19 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
详解vue 组件
2020/06/11 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
Android面试宝典
2013/08/06 面试题
测绘工程系学生的自我评价
2013/11/30 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
父亲去世追悼词
2015/06/23 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
python3中apply函数和lambda函数的使用详解
2022/02/28 Python