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开发工程师面试问题集锦
Nov 01 面试题
介绍下Java的输入输出流
Jan 22 面试题
华为c/c++笔试题
Jan 25 面试题
SQL Server 2000数据库的文件有哪些,分别进行描述
Mar 30 面试题
数据库的约束含义
Sep 09 面试题
如何理解委托
Jan 06 面试题
NET程序员上机面试题
May 23 面试题
南京某公司笔试题
Jan 27 面试题
C#怎么让一个窗口居中显示?
Oct 20 面试题
说一下Linux下有关用户和组管理的命令
Jan 04 面试题
数字天堂软件测试面试题
Dec 23 面试题
95%的面试官都会问到的50道Java线程题,附答案
Aug 03 面试题
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原创论坛
2006/10/09 PHP
一个用php3编写的简单计数器
2006/10/09 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
ext实现完整的登录代码
2008/08/08 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
loading动画特效小结
2017/01/22 Javascript
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
koa源码中promise的解读
2018/11/13 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
python 实现堆排序算法代码
2012/06/05 Python
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
python实现梯度下降算法
2020/03/24 Python
python实现flappy bird游戏
2018/12/24 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
python中复数的共轭复数知识点总结
2020/12/06 Python
荷兰手表网站:Watch2Day
2018/07/02 全球购物
实习生的自我评价
2014/01/08 职场文书
教师师德师风个人整改方案
2014/09/18 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS