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

面试题 相关文章推荐
mysql的最长数据库名,表名,字段名可以是多长
Apr 21 面试题
如何配置、使用和清除Smarty缓存
Dec 23 面试题
JNI的定义
Nov 25 面试题
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
Apr 28 面试题
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
Aug 15 面试题
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
May 18 面试题
new修饰符是起什么作用
Jun 28 面试题
瀑布模型都有哪些优缺点
Jun 23 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
May 24 面试题
Python如何实现单例模式
Jun 03 面试题
Hibernate持久层技术
Dec 16 面试题
Java servlet面试题
Mar 04 面试题
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 cache类代码(php数据缓存类)
2010/04/15 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
js 函数性能比较方法
2020/08/24 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
django创建自定义模板处理器的实例详解
2017/08/14 Python
pygame实现简易飞机大战
2018/09/11 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
详解python itertools功能
2020/02/07 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
护士医德考评自我评价
2015/03/03 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python