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

面试题 相关文章推荐
新电JAVA笔试题目
Aug 31 面试题
2019年Java 最常见的 面试题
Oct 19 面试题
一套带网友答案的.NET笔试题
Dec 06 面试题
Can a struct inherit from another class? (结构体能继承类吗)
Jul 22 面试题
编写一个类体现构造,公有,私有方法,静态,私有变量
Aug 10 面试题
什么是反射
Mar 17 面试题
linux面试题参考答案(7)
Oct 29 面试题
简述进程的启动、终止的方式以及如何进行进程的查看
Jul 12 面试题
远程调用的原理
Jul 05 面试题
华为python面试题
May 03 面试题
Java面试题:为什么要用Java
May 11 面试题
J2EE相关知识面试题
Aug 26 面试题
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 ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
python利用正则表达式提取字符串
2016/12/08 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
python中列表和元组的区别
2017/12/18 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
浅谈django orm 优化
2018/08/18 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
python把转列表为集合的方法
2019/06/28 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
医学院四年学习生活的自我评价
2013/11/06 职场文书
单位委托书
2014/10/15 职场文书
校本研修个人总结
2015/02/28 职场文书
Jsonp劫持学习
2021/04/01 PHP
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL
Python Pygame实战之塔防游戏的实现
2022/03/17 Python