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

面试题 相关文章推荐
什么是serialVersionUID
Mar 04 面试题
*p++ 自增p 还是p所指向的变量
Jul 16 面试题
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
Apr 15 面试题
用C或者C++语言实现SOCKET通信
Feb 24 面试题
创建索引时需要注意的事项
May 13 面试题
介绍一下write命令
Aug 10 面试题
北京鼎普科技股份有限公司软件测试面试题
Apr 07 面试题
传统软件工程与面向对象的软件工程有什么区别
May 31 面试题
敏捷开发的主要原则都有哪些
Apr 26 面试题
腾讯公司的一个sql题
Jan 22 面试题
java程序员面试交流
Nov 29 面试题
史上最全面的Java面试题汇总!
Feb 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 chmod 函数与批量修改文件目录权限
2010/05/10 PHP
php动态生成函数示例
2014/03/21 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
window.name代替cookie的实现代码
2010/11/28 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
Javascript继承机制详解
2017/05/30 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
Python中几个比较常见的名词解释
2015/07/04 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
Python list和str互转的实现示例
2020/11/16 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
大专生自我评价
2014/01/28 职场文书
我爱我校演讲稿
2014/05/21 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android