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

article/2025/8/23 19:24:55

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#》

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

在这里插入图片描述


http://www.hkcw.cn/article/xCRpvOgtsZ.shtml

相关文章

【AI面试秘籍】| 第24期:Transformers / LLM的词表应该选多大?

在构建和训练Transformers以及大型语言模型 (LLM) 时&#xff0c;词表 (Vocabulary) 大小的选择是一个至关重要且常常令人困惑的问题。它不仅直接影响模型的性能&#xff0c;还关系到模型的计算效率和内存占用。那么&#xff0c;当面试官抛出这个问题时&#xff0c;我们应该如何…

一文清晰理解目标检测指标计算

一、核心概念 1.交并比IoU 预测边界框与真实边界框区域的重叠比&#xff0c;取值范围为[0,1] 设预测边界框为&#xff0c;真实边界框为 公式&#xff1a; IoU计算为两个边界框交集面积与并集面积之比&#xff0c;图示如下 IoU值越高&#xff0c;表示预测边界框与真实边界框的对…

一文讲懂fork函数(c语言linux)

c语言的fork函数是拿来创建子进程的, 进程 pcb(process control block) 代码和数据 子进程中的代码和数据与父进程的一致(共享父进程的代码和数据),没有自己的代码和数据. 如果父进程或者子进程要修改数据,操作系统就会把要修改的数据拷贝一份新的,让目标进程修改这份拷贝…

LVDS系列14:Xilinx Ultrascale系可编程输入延迟(四)

本节讲解Ultrascale IDELAYE3的TIME模式仿真&#xff1b;  TIME模式下参数和时序&#xff1a; 必须例化IDELAYCTRL&#xff0c;IDELAYCTRL时钟频率与REFCLK_FREQUEMCY参数相同&#xff1b; 有温度电压补偿&#xff0c;EN_VTC在修改抽头值时拉低&#xff0c;修改完毕后拉高&a…

RTX腾讯通停服后,有哪些兼容Linux及移动端的升级途径?

一、RTX腾讯通停服后的核心挑战 1.国产系统与移动端适配中断 RTX腾讯通停更后无法适配统信UOS、银河麒麟等国产操作系统&#xff0c;原有Windows版本在Linux内核环境下运行异常&#xff0c;且缺乏Android、iOS移动端支持&#xff0c;阻碍跨平台协作。 2.大规模组织架构同步失…

美团启动618大促,线上消费节被即时零售传导到线下了?

首先&#xff0c;从市场推广与消费者吸引的角度来看&#xff0c;美团通过联合众多品牌开展大规模促销活动&#xff0c;并发放高额优惠券包&#xff0c;旨在吸引更多消费者参与购物。这种策略有助于提高平台的活跃度和交易量&#xff0c;同时也能够增强用户粘性。对于消费者而言…

TDengine 运维——巡检工具(安装前预配置)

背景 TDengine 的安装部署对环境系统有一定的依赖和要求&#xff0c;安装部署前需要进行环境预配置操作&#xff0c;本文档旨在说明安装前预配置工具在安装 TDengine 前对环境的预配置内容和工具的使用方法。 预配置工具使用方法 工具支持通过 help 参数查看支持的语法 Usa…

收集飞花令碎片——C语言(数组+函数)

C语言的函数&#xff08;Function&#xff09;是程序的基本构建块&#xff0c;用于封装一段可重用的代码&#xff0c;完成特定任务。函数可以提高代码的模块化、可读性和复用性。 目录 函数库函数标准库头文件自定义函数&#xff08;1&#xff09;基本语法&#xff08;2&#x…

2013-2021年各省电子商务数据

2013-2021年各省电子商务数据 1、时间&#xff1a;2013-2021年 2、来源&#xff1a;国家统计局、各省年鉴 3、指标&#xff1a;统计年度、地区代码、地区名称、电子商务销售额 4、范围&#xff1a;31省 5、指标说明&#xff1a;电子商务销售额是指通过电子商务平台进行商品…

企业级开发的 “技术主权保卫战”:iVX 源码自主性实践指南

在数字化转型的浪潮中&#xff0c;技术主权已成为企业核心竞争力的关键组成部分。iVX 作为全栈可视化开发平台&#xff0c;通过源码自主性实践&#xff0c;为企业构建了从开发工具到行业落地的全栈解决方案&#xff0c;在安全架构、国产替代、合规优势三大领域实现了技术突破与…

Python-12(函数)

函数的主要功能是可以打包代码&#xff0c;最大程度的实现代码的重用&#xff0c;减少冗余代码&#xff0c;可以将不同功能的代码进行封装&#xff0c;从而降低结构的复杂度&#xff0c;提高代码的可读性。 创建和调用函数 使用def语句来定义函数。 def myFunc():print(&quo…

罗德里格斯公式动图演示

一. 罗德里格斯公式形式: R o t ( ω ^ , θ ) e [ ω ] ^ θ I s i n θ [ ω ^ ] ( 1 − c o s θ ) [ ω ^ ] 2 Rot(\hat{\bold{\omega}}, \theta)e^{\hat{\bold{[\omega]}}_{\times} \theta}\bold{I}sin\theta[\hat{\bold{\omega}}]_{\times}(1-cos\theta)[\hat{\bo…

多家医院回应药企向上百名医生行贿 调查正在进行中

近日,一则关于某药企被举报向四川多家医院上百名医生行贿的消息引发广泛关注。举报材料中提及了四川省内包括成都市、绵阳市、广安市在内的多个城市的37家医疗机构。达州市第一人民医院工作人员表示,举报信中提到的医生并不在院方员工名单中,且该院去年才成立,往年员工名单…

高密爆炸警钟长鸣:AI为化工安全戴上“智能护盾”

一、高密爆炸&#xff1a;一声巨响&#xff0c;撕开化工安全“伤疤” 2025年5月27日&#xff0c;山东高密友道化学有限公司的车间爆炸声&#xff0c;像一把利刃划破了化工行业的平静。剧烈的冲击波将车间夷为平地&#xff0c;黑色蘑菇云腾空而起&#xff0c;刺鼻的化学气味弥漫…

微软 Azure AI Foundry(国际版)十大重要更新

2025 年被广泛视为 “AI 智能体元年”。在过去半年&#xff0c;微软密集发布众多创新技术&#xff0c;构建起从基础设施层、开发工具层到场景应用层的完整技术矩阵&#xff0c;加速推动诸多具备自主决策能力的 “超级助理” 智能体落地&#xff0c;形成完整的 AI 赋能生态&…

撒贝宁在广东水陆两栖过端午,广东过端午到底有多嗨?

撒贝宁在广东水陆两栖过端午。“龙舟漂移”惊险刺激,荔枝让苏轼灵感迸发,还有机器人参与的赛博端午节……广东过端午到底有多嗨?撒贝宁近日现身佛山叠滘,沉浸式体验龙舟季活动。在蜿蜒狭窄的河道上,他勇敢挑战龙舟漂移,完成高难度C弯动作时,自信高呼粤语有各位大哥在这里…

【HarmonyOS 5】鸿蒙中的UIAbility详解(二)

【HarmonyOS 5】鸿蒙中的UIAbility详解&#xff08;二&#xff09; 一、前言 今天我们继续深入讲解UIAbility&#xff0c;根据下图可知&#xff0c;在鸿蒙中UIAbility继承于Ability&#xff0c;开发者无法直接继承Ability。只能使用其两个子类&#xff1a;UIAbility和Extensi…

滚珠导轨:电子制造“纳米级”精度的运动基石

在电子制造与半导体设备追求“微米级工艺、纳米级控制”的赛道上&#xff0c;滚珠导轨凭借高刚性、低摩擦与高洁净特性&#xff0c;成为精密运动系统的核心载体。从芯片封装到晶圆检测&#xff0c;其性能直接定义了设备生产的极限精度与可靠性。滚珠导轨在电子制造与半导体设备…

高端装备制造企业如何选择适配的项目管理系统提升项目执行效率?附选型案例

高端装备制造项目通常涉及多专业协同、长周期交付和高风险管控&#xff0c;因此系统需具备全生命周期管理能力。例如&#xff0c;北京奥博思公司出品的 PowerProject 项目管理系统就是一款非常适合制造企业使用的项目管理软件系统。 国内某大型半导体装备制造企业与奥博思软件达…

MS37549/MS37545三相无感正弦波 BLDC 驱动

产品简述 MS37549 和 MS37545 是无感三相直流电机预驱芯片&#xff0c;采用 正弦波驱动方式&#xff0c;具有低噪声及低震动的特点。 芯片通过一个速度控制脚来控制电机的速度。并且电源电压 可以低到 4V 来适应调整电机的转速。 MS37549 和 MS37545 采用 QFN16 …