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...

面试题 相关文章推荐
Yahoo-PHP面试题4
May 05 面试题
Java工程师面试集锦之Spring框架
Jun 16 面试题
以思科路由器为例你写下单臂路由的配置命令
Aug 03 面试题
可靠的数据流传输TCP
Mar 15 面试题
可以使用抽象函数重写基类中的虚函数吗
Jun 02 面试题
进程的查看和调度分别使用什么命令
Mar 25 面试题
linux系统都有哪些运行级别
Mar 26 面试题
什么是组件架构
May 15 面试题
几个判断型的面试题
Jul 03 面试题
25道Java面试题集合
May 21 面试题
J2EE相关知识面试题
Aug 26 面试题
Java面试题冲刺第十五天--设计模式
Aug 07 面试题
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中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
php中Snoopy类用法实例
2015/06/19 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
微信小程序入门教程
2016/11/18 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
Angular2 父子组件数据通信实例
2017/06/22 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
python 默认参数问题的陷阱
2016/02/29 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
详解python运行三种方式
2019/05/13 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
中文教师求职信
2014/02/22 职场文书
党员自我对照检查材料
2014/08/19 职场文书
党校学习心得体会范文
2014/09/09 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
2015年复活节活动总结
2015/02/27 职场文书
学校德育工作总结2015
2015/05/11 职场文书
李强优秀员工观后感
2015/06/16 职场文书