当前位置: 首页 > news >正文

20250529-C#知识:运算符重载

C#知识:运算符重载

运算符重载能够让我们像值类型数据那样使用运算符对类或结构体进行运算,并且能够自定义运算逻辑。


1、运算符重载及完整代码示例

  • 作用是让自定义的类或者结构体能够使用运算符
  • 运算符重载一定是public static的
  • 可以把运算符看成一个函数
  • 例如双目运算符’+'就是一个具有两个参数的函数
  • 运算符重载是根据运算符的参数的不同进行重载,类比函数重载
  • 条件运算符要成对重载
  • 不能使用ref和out关键字
  • 重载不改变运算符优先级
namespace LearnOperatorOverloading
{internal class Program{class Rect{public float height;public float width;public Rect() : this(2, 2) { }public Rect(float height, float width){this.height = height;this.width = width;}public float GetArea() => height * width;//条件运算符要成对重载public static bool operator <(Rect a, Rect b){if(a.height * a.width < b.height * b.width)return true;return false;}            public static bool operator >(Rect a, Rect b){if(a.height * a.width > b.height * b.width)return true;return false;}public static Rect operator + (Rect a, Rect b) => new Rect(a.height + b.height, a.width + b.width);public static Rect operator *(Rect a, Rect b) => new Rect(a.height * b.height, a.width * b.width);}static void Main(string[] args){Rect rect = new Rect();Console.WriteLine(rect.GetArea());  //4 Rect rect2 = new Rect(3, 5);Console.WriteLine(rect2.GetArea()); //15Console.WriteLine((rect2 + rect).GetArea());    //35Console.WriteLine((rect * rect2).GetArea());    //60//先乘后加,运算符重载后运算顺序不变Console.WriteLine((rect + rect * rect2).GetArea()); //96if (rect < rect2)   //Rect < Rect2Console.WriteLine("Rect < Rect2");elseConsole.WriteLine("Rect >= Rect2");}}
}

2、不可重载的运算符

  • 赋值运算符=
  • 点. 索引[] 强转()
  • 三目运算符 ?:
  • 逻辑或|| 和逻辑与&&

3、参考资料

  1. 《唐老狮C#》

本篇结束,感谢您的阅读~

在这里插入图片描述

相关文章:

  • LangChain【2】之专业术语
  • 高防IP能抗住500G攻击吗?
  • 华为OD机试真题——阿里巴巴找黄金宝箱Ⅰ(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 禾纳ATE3156AP/ATE3156AS,P沟道增强型MOSFET,替代AO4805方案
  • [MMU]IOMMU的主要职能及详细的验证方案
  • 涨薪技术|0到1学会性能测试第90课-性能测试构建
  • 【Elasticsearch】suggest
  • GPU层次结构(Nvidia和Apple M芯片,从硬件到pytorch)
  • AI生成思维导图全技术解析
  • 使用 pytesseract 构建一个简单 OCR demo
  • 湖北理元理律师事务所观察:债务优化如何成为民生安全网
  • 安装一个包 myPhysicsLab
  • WPF prism
  • 小表驱动大表更快吗,不是
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(二十一)
  • 复合机器人:纠偏算法如何重塑工业精度与效率?
  • AI产品风向标:从「工具属性」到「认知引擎」的架构跃迁​
  • AI智能体|扣子(Coze)搭建【自动生成超高质量PPT】工作流
  • [ctfshow web入门] web79
  • C++进阶--C++11(04)
  • 广州网站推广解决方案/厂房网络推广平台
  • 地铁建设网站/站长统计推荐
  • 最好的手机资源网站/太原关键词优化公司
  • 房屋建筑设计说明/长春网站优化咨询
  • 如果有域名和空间怎么做网站/网站接广告平台
  • 长沙小红书推广公司/苏州优化seo