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面试题1
Jul 20 面试题
super关键字的用法
Apr 10 面试题
C语言50道问题
Oct 23 面试题
金山毒霸系列的笔试题
Apr 13 面试题
类成员函数的重载、覆盖和隐藏区别
Jan 27 面试题
如何在.net Winform里面显示PDF文档
Sep 11 面试题
傲盾软件面试题
Aug 17 面试题
linux面试题参考答案(7)
Jul 24 面试题
传统软件工程与面向对象的软件工程有什么区别
May 31 面试题
EJB的激活机制
Oct 25 面试题
不同浏览器创建XMLHttpRequest方法有什么不同
Nov 17 面试题
如何执行一个shell程序
Nov 23 面试题
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 观察者模式的实现代码
2013/05/10 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
php实现的双向队列类实例
2014/09/24 PHP
前端必学之PHP语法基础
2016/01/01 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
Element Input组件分析小结
2018/10/11 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
Python的高阶函数用法实例分析
2019/04/11 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
Python用户自定义异常的实现
2020/12/25 Python
消防标语大全
2014/06/07 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
升学宴学生致辞
2015/09/29 职场文书
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫