C#explicti和implicit详解

C#语言有很多值得学习的地方,这里我们主要介绍C# explicti和implicit,包括介绍隐式转换可以让我们的代码看上去更漂亮、更简洁易懂等方面。

C#explicti和implicit的含义

◆C# explicti和implicit属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换

◆explicti表示显式转换,如从 A -> B 必须进行强制类型转换(B = (B)A)

◆implicit 表示隐式转换,如从 B -> A 只需直接赋值(A = B)

隐式转换可以让我们的代码看上去更漂亮、更简洁易懂,所以***多使用implicit运算符。不过!如果对象本身在转换时会损失一些信息(如精度),那么我们只能使用 explicti运算符,以便在编译期就能警告客户调用端。

示例:

 
 
 
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace Example23
  6. {
  7. class Program
  8. {
  9. //本例灵感来源于大话西游经典台词“神仙?妖怪?”--主要是我实在想不出什么好例子了
  10. class Immortal
  11. {
  12. public string name;
  13. public Immortal(string Name)
  14. {
  15. name = Name;
  16. }
  17. public static implicit operator Monster(Immortal value)
  18. {
  19. return new Monster(value.name + ":神仙变妖怪?偷偷下凡即可。。。");
  20. }
  21. }
  22. class Monster
  23. {
  24. public string name;
  25. public Monster(string Name)
  26. {
  27. name = Name;
  28. }
  29. public static explicit operator Immortal(Monster value)
  30. {
  31. return new Immortal(value.name + ":妖怪想当神仙?再去修炼五百年!");
  32. }
  33. }
  34. static void Main(string[] args)
  35. {
  36. Immortal tmpImmortal = new Immortal("紫霞仙子");
  37. //隐式转换
  38. Monster tmpObj1 = tmpImmortal;
  39. Console.WriteLine(tmpObj1.name);
  40.  
  41. Monster tmpMonster = new Monster("孙悟空");
  42. //显式转换
  43. Immortal tmpObj2 = (Immortal)tmpMonster;
  44. Console.WriteLine(tmpObj2.name);
  45.  
  46. Console.ReadLine();
  47. }
  48. }
  49. }

当前名称:C#explicti和implicit详解
文章分享:http://www.shufengxianlan.com/qtweb/news17/316767.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联