explicit关键字

explicit关键字的作用是强制转换用户自定义的显式类型转换运算符。通常前面通用static后面用operator,一般是把当前类型转换为另一个类型(将原类型转换为目标类型)。
举个例子:

class A
{public A(float f){p = f;Console.WriteLine("p of A is " + p.ToString());}public float p { get; private set; }public static explicit operator B(A a){return new B(a.p * 2);}
}
class B
{public B(float f){p = f;Console.WriteLine("p of B is " + p.ToString());}public float p { get; private set; }public static explicit operator A(B b){return new A(b.p * 10f);}
}

调用方式如下:

A a = new A(10);
B b = (B)a;

控制台输出如下:

p of A is 10
p of B is 20

implicit关键字

implicit关键字和explicit关键字类似,它实现自定义类型的隐式类型转换。
还是上面的例子:

class A
{public A(float f){p = f;Console.WriteLine("p of A is " + p.ToString());}public float p { get; private set; }public static implicit operator B(A a){return new B(a.p * 2);}
}
class B
{public B(float f){p = f;Console.WriteLine("p of B is " + p.ToString());}public float p { get; private set; }public static implicit operator A(B b){return new A(b.p * 10f);}
}

调用方式如下:

A a = new A(10);
B b = a;

控制台输出如下:

p of A is 10
p of B is 20
Tips

注意的是A类到B类的”显式“和”隐式“ 转换只能定义一个,不能同时定义两个。

转载于:https://www.cnblogs.com/lsy1991/p/10309166.html

implicit关键字和explicit关键字相关推荐

  1. C++ - explicit关键字

    C++ - explicit关键字 最近在阅读android底层源码的时候,发现其中好多代码使用了explicit关键字,因此这里对explicit关键字进行了分析和介绍. 文章目录 C++ - ex ...

  2. 【C++】explicit关键字

    explicit的优点是可以避免不合时宜的类型变换,缺点无.所以google约定所有单参数的构造函数都必须是显式的** explicit关键字只需用于类内的单参数构造函数前面.由于无参数的构造函数和多 ...

  3. C++中的explicit关键字介绍

    C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换.类构造函数默认情况下声明为隐式的即implicit. 隐式转 ...

  4. C++ explicit关键字详解(转载)

    转载:https://www.cnblogs.com/ymy124/p/3632634.html 首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函 ...

  5. explicit关键字详解(C++ )

    一:首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造 ...

  6. C++之explicit关键字使用总结

    1.explicit关键字介绍 C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 关键字是implicit, 意思是隐藏的,类构 ...

  7. 深入理解C++中的explicit关键字

    深入理解C++中的explicit关键字 kezunhai@gmail.com http://blog.csdn.net/kezunhai C++中的explicit关键字只能用于修饰只有一个参数的构 ...

  8. C++:explicit关键字

    首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数 ...

  9. VC++工作笔记0003---C++中的explicit关键字

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 个人理解: 这个的作用,其实就是,防止隐式转换,因为如果有隐式转换的话,那么用起来,感觉就怪怪的, ...

  10. C++ explicit关键字详解

    首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数 ...

最新文章

  1. TensorFlow创建DeepDream网络
  2. 2021年第十六届智能车竞赛线上决赛之前大家的提问
  3. 跟着老王学python
  4. 在国企当程序员是什么体验?
  5. SQL Server中表锁定的原理及解锁演示
  6. Maven : JsonMappingException: Incompatible Jackson version: 2.9.5
  7. 《深入理解Linux内核》条目式笔记 _2
  8. Android系统中震动功能的测试
  9. Ubuntu alias在/etc/profile重启无效解决
  10. Freenas使用小结(一)安装
  11. 流水线效率计算公式_线束加工的生产效率、爬坡计划与产能提升浅读
  12. [4G5G专题-17]:需求-5G发展的主要驱动力
  13. 安装 Maxwell
  14. 2021软考软件设计师真题
  15. 阿斯蒂芬萨法撒旦法撒旦发射点发射得分萨法撒旦法撒旦法
  16. 【微生物相关数据库】NAR database issue
  17. MACOS 打开 Pycharm2020 闪退解决方法
  18. dc是什么游戏的简称_足球里位置简称CB和DC有什么区别
  19. PAT乙级1033 旧键盘打字
  20. ZJOI round1游记

热门文章

  1. 腾讯同事要跳槽,问我背包问题具体咋回事,我直接甩给他这篇!
  2. 如何授权您的Mac播放AppleMusic?
  3. 如何在 iPhone 和 iPad 上关闭 Spotlight 建议?
  4. iOS开发的几种加密方式
  5. 区块链开发(一)搭建基于以太坊的私有链环境
  6. 如何在Mac上的键盘辅助功能中使用面板编辑器?
  7. 在苹果Mac上格式化USB闪存驱动器
  8. 二分类问题的评分值与损失函数
  9. Centos 7 keepalived双机热备
  10. almost a hero 差不多英雄 攻略