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

面试题 相关文章推荐
Sony C++笔试题
Mar 10 面试题
是否有自动比较结构的方法
Jun 03 面试题
网络安全类面试题
Aug 01 面试题
介绍一下MD5加密算法
Nov 12 面试题
下列程序在32位linux或unix中的结果是什么
Jan 26 面试题
Linux文件操作命令都有哪些
Feb 27 面试题
linux比较文件内容的命令是什么
Mar 04 面试题
介绍一下gcc特性
Oct 31 面试题
MySQL面试题目集锦
Apr 14 面试题
String s = new String(“xyz”);创建了几个String Object?
Aug 05 面试题
Java的类可以定义为Protected或者Private得吗
Sep 25 面试题
北京捷通华声语音技术有限公司Java软件工程师笔试题
Apr 10 面试题
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
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Python中动态创建类实例的方法
2017/03/24 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
详解Python中import机制
2020/09/11 Python
python如何实时获取tcpdump输出
2020/09/16 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
广告词串烧
2014/03/19 职场文书
高中军训的心得体会
2014/09/01 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
财务管理制度范本
2015/08/04 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis