不忘本~explicit和implicit修饰符

简介:

部分内容来自MSDN

implicit 关键字用于声明隐式的用户定义类型转换运算符。如果转换过程可以确保不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换。

 1     class Digit
 2 
 3     {
 4 
 5         public Digit(double d) { val = d; }
 6 
 7         public double val;
 8 
 9  
10 
11  
12 
13         // User-defined conversion from Digit to double
14 
15         public static implicit operator double(Digit d)
16 
17         {
18 
19             return d.val;
20 
21         }
22 
23         //  User-defined conversion from double to Digit
24 
25         public static implicit operator Digit(double d)
26 
27         {
28 
29             return new Digit(d);
30 
31         }
32 
33     }
34 
35     class Program
36 
37     {
38 
39         static void Main(string[] args)
40 
41         {
42 
43             Digit dig = new Digit(7);
44 
45             //This call invokes the implicit "double" operator
46 
47             double num = dig;
48 
49             //This call invokes the implicit "Digit" operator
50 
51             Digit dig2 = 12;
52 
53             Console.WriteLine("num = {0} dig2 = {1}", num, dig2.val);
54 
55             Console.ReadLine();
56 
57         }
58 
59     }

explicit 关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符

 1 // cs_keyword_explicit_temp.cs
 2 using System;
 3 class Celsius
 4 {
 5     public Celsius(float temp)
 6     {
 7         degrees = temp;
 8     }
 9     public static explicit operator Fahrenheit(Celsius c)
10     {
11         return new Fahrenheit((9.0f / 5.0f) * c.degrees + 32);
12     }
13     public float Degrees
14     {
15         get { return degrees; }
16     }
17     private float degrees;
18 }
19 
20 class Fahrenheit
21 {
22     public Fahrenheit(float temp)
23     {
24         degrees = temp;
25     }
26     public static explicit operator Celsius(Fahrenheit f)
27     {
28         return new Celsius((5.0f / 9.0f) * (f.degrees - 32));
29     }
30     public float Degrees
31     {
32         get { return degrees; }
33     }
34     private float degrees;
35 }
36 
37 class MainClass
38 {
39     static void Main()
40     {
41         Fahrenheit f = new Fahrenheit(100.0f);
42         Console.Write("{0} fahrenheit", f.Degrees);
43         Celsius c = (Celsius)f;
44         Console.Write(" = {0} celsius", c.Degrees);
45         Fahrenheit f2 = (Fahrenheit)c;
46         Console.WriteLine(" = {0} fahrenheit", f2.Degrees);
47     }
48 }

 本文转自博客园张占岭(仓储大叔)的博客,原文链接:不忘本~explicit和implicit修饰符,如需转载请自行联系原博主。

目录
相关文章
|
Unix Linux 程序员
Linux必知词汇:GNU通用公共许可证 GPL(GNU General Public License)
Linux必知词汇:GNU通用公共许可证 GPL(GNU General Public License)
3095 0
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
教育领域的AI进展:智能辅导与个性化学习的技术革新与挑战
随着人工智能技术的发展,AI Agent在教育领域的应用日益广泛,特别是在智能辅导与个性化学习方面展现出巨大潜力。通过自然语言处理、机器学习和数据分析等技术,AI可模拟个性化辅导员,根据学生的学习情况提供定制化资源与实时反馈。未来,AI Agent将更注重情感分析与跨学科培养,成为教师的有力助手,推动教育公平与效率提升。然而,数据隐私、个体差异及教育资源不平衡等问题仍需克服,以实现更智能化、全面化的教育生态。
553 10
教育领域的AI进展:智能辅导与个性化学习的技术革新与挑战
|
6月前
|
缓存 安全 API
RESTful与GraphQL:电商API接口设计的技术细节与适用场景
本文对比了RESTful与GraphQL这两种主流电商API接口设计方案。RESTful通过资源与HTTP方法定义操作,简单直观但可能引发过度或欠获取数据问题;GraphQL允许客户端精确指定所需字段,提高灵活性和传输效率,但面临深度查询攻击等安全挑战。从性能、灵活性、安全性及适用场景多维度分析,RESTful适合资源导向场景,GraphQL则适用于复杂数据需求。实际开发中需根据业务特点选择合适方案,或结合两者优势,以优化用户体验与系统性能。
|
机器学习/深度学习 存储 人工智能
模型压缩技术综述
模型压缩技术综述
699 0
|
SQL Java 数据库连接
Java日志的学习03--log4j 配置Spring JdbcTemplate已经MyBatis打印sql
今天接着说说如何在日志中配置SQL打印输出。
1046 0
Java日志的学习03--log4j 配置Spring JdbcTemplate已经MyBatis打印sql
|
存储 弹性计算 运维
从备份升级到容灾,利用阿里云就可以做到的灾备方案
从备份升级到容灾,利用阿里云就可以做到的灾备方案
从备份升级到容灾,利用阿里云就可以做到的灾备方案
文件系统里面没有 /dev/input/mice 文件的解决办法
文件系统里面没有 /dev/input/mice 文件的解决办法
455 0
文件系统里面没有 /dev/input/mice 文件的解决办法
|
关系型数据库 MySQL 数据库
MySQL 数据库修改访问权限,不能使用ip连接mysql问题处理:Host ‘host.docker.internal‘ is not allowed to connect to this ...
MySQL 数据库修改访问权限,不能使用ip连接mysql问题处理:Host ‘host.docker.internal‘ is not allowed to connect to this ...
789 0
|
算法 安全 PHP
Hash算法详细介绍与实现(一)
Hash表(HashTable)又称散列表,通过把关键字Key映射到数组中的一个位置来访问记录,以加快查找速度,这个映射函数称为Hash函数,存放记录的数组称为Hash表.散列表是散列函数的一个主要应用(注意:关键字不是像在加密中所使用的那样是秘密的,但它们都是用来"解锁"或者访问数据的。)例如,在英语字典中的关键字是英文单词,和它们相关的记录包含这些单词的定义。在这种情况下,散列函数必须把按照字母顺序排列的字符串映射到为散列表的内部数组所创建的索引上。
759 1
|
Ubuntu Linux
Centos和Ubutun系统内核升级操作
Centos和Ubutun系统内核升级操作
Centos和Ubutun系统内核升级操作

热门文章

最新文章