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面试题附答案
Jun 05 面试题
编码实现字符串转整型的函数
Jun 02 面试题
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
Oct 03 面试题
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
Feb 22 面试题
统计每一学生的平均成绩
Jun 06 面试题
介绍一下SQL Server里面的索引视图
Jul 31 面试题
使用索引(Index)有哪些需要考虑的因素
Oct 19 面试题
ORACLE十问
Apr 20 面试题
简述数据库的设计过程
Jun 22 面试题
杭州龙健科技笔试题.net部分笔试题
Jan 24 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
Mar 10 面试题
Ruby如何实现动态方法调用
Nov 18 面试题
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
德生PL660的电路分析和打磨
2021/03/02 无线电
SMARTY学习手记
2007/01/04 PHP
php横向重复区域显示二法
2008/09/25 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
JavaScript学习笔记(十)
2010/01/17 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
Django组件之cookie与session的使用方法
2019/01/10 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
大学生优秀团员事迹材料
2014/01/30 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
挂牌仪式主持词
2014/03/20 职场文书
技校毕业生自荐书
2014/05/23 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
2015年推普周活动总结
2015/03/27 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
SQLServer权限之只开启创建表权限
2022/04/12 SQL Server
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS