c# 运算符重载 explicit implicit operator

先上代码验证

复制代码
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5 
 6             var p1 = new Person {Age = 30};
 7             var p2 = new Person { Age = 31 };
 8             Console.WriteLine(p1==p2);//运算符重载   输出false
 9             //
10 
11             Person person = p1.Age;
12             Console.WriteLine(person.Age);// 输出30
13             var age = (int)p2;
14             Console.WriteLine(age);// 输出31
15             //
16             Console.ReadKey();
17         }
18     }
19 
20     public class Person
21     {
22         public int Age { set; get; }
23         public static bool operator ==(Person p1, Person p2) => p1.Age == p2.Age;
24         public static bool operator !=(Person p1, Person p2) => !(p1.Age == p2.Age);
25         //此处写 implicit 隐式转换  explicit 显示转换 都可以 显示转换在用的地方进行强制转换
26         public static implicit operator Person(int age)
27         {
28             return new Person {Age = age};
29         }
30         //
31         public static  explicit  operator int(Person person)
32         {
33             return person.Age;
34         }
35     }
复制代码

结论  运算符重载必须是静态方法

posted on   WINSH  阅读(136)  评论(0编辑  收藏  举报

编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示