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 }
结论 运算符重载必须是静态方法
菜鸟-潜水中
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件