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如何自定义函数
Sep 16 面试题
介绍一下Java的安全机制
Jun 28 面试题
JAVA的事件委托机制和垃圾回收机制
Sep 07 面试题
如何让Java程序执行效率更高
Jun 25 面试题
一份Java笔试题
Feb 21 面试题
关联、聚合(Aggregation)以及组合(Composition)的区别
Feb 29 面试题
什么是"引用"?申明和使用"引用"要注意哪些问题?
Mar 03 面试题
database面试题
Mar 28 面试题
一套.net面试题及答案
Nov 02 面试题
介绍一下grep命令的使用
Jun 28 面试题
Python是如何进行类型转换的
Jun 09 面试题
Ruby如何定义一个类
Oct 08 面试题
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下读取文本文件的代码
2008/07/02 PHP
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
php删除指定目录的方法
2015/04/03 PHP
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
Django app配置多个数据库代码实例
2019/12/17 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
python+requests接口自动化框架的实现
2020/08/31 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
后勤主管工作职责
2013/12/07 职场文书
法务专员岗位职责
2015/02/14 职场文书
保护地球的宣传语
2015/07/13 职场文书
离婚协议书范文2016
2016/03/18 职场文书
MySQL学习之基础操作总结
2022/03/19 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL