设为首页 加入收藏

TOP

explicit 和 implicit 的含义?
2014-11-23 23:41:59 来源: 作者: 【 】 浏览:2
Tags:explicit implicit 含义

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();


}


}


}


结果:
紫霞仙子:神仙变妖怪?偷偷下凡即可。。。
孙悟空:妖怪想当神仙?再去修炼五百年!


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇面试常见话题的问与答 Opening Re.. 下一篇软件测试中各种覆盖法的优缺点

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: