C# 运算符重载 之前的小总结
C# 中支持运算符重载,所谓运算符重载就是我们可以使用自定义类型来重新定义 C# 中大多数运算符的功能。运算符重载需要通过 operator 关键字后跟运算符的形式来定义的,我们可以将被重新定义的运算符看作是具有特殊名称的函数,与其他函数一样,该函数也有返回值类型和参数列表,如下例所示:
public static Box operator+ (Box b, Box c) {Box box = new Box();box.length = b.length + c.length;box.breadth = b.breadth + c.breadth;box.height = b.height + c.height;return box;
}
重点
运算符重载格式
public static ClassName operator##op (ele) {//something
}
下表描述了 C# 中运算符重载的能力:
运算符 描述
| 运算符 | 描述 |
|---|---|
| +, -, !, ~, ++, – | 这些一元运算符只有一个操作数,且可以被重载。 |
| +, -, *, /, % | 这些二元运算符带有两个操作数,且可以被重载。 |
| ==, !=, <, >, <=, >= | 这些比较运算符可以被重载。 |
| &&, || | 这些条件逻辑运算符不能被直接重载。 |
| +=, -=, *=, /=, %= | 这些赋值运算符不能被重载。 |
| =, ., ?:, ->, new, is, sizeof, typeof | 这些运算符不能被重载。 |
细看
using System;//主程序入口
class TODO {static void Main() {Console.WriteLine("Hello C#!");ComplexNumber a = new ComplexNumber(1, 2);ComplexNumber b = new ComplexNumber(2, 5);ComplexNumber c = new ComplexNumber();c = a + b;Console.WriteLine("c = {0} + {1}i",c.real, c.imaginary);double rea, imb;c.linkA(out rea).linkB(out imb);Console.WriteLine("rea = {0}, imb = {1}", rea, imb);}
}class ComplexNumber{//私有成员 实部和虚部private double Real;private double Imaginary;//get setpublic double real {get { return Real; } set { Real = value; } }public double imaginary {get { return Imaginary; }set { Imaginary = value; }}//含参构造public ComplexNumber(double re = 0.0, double im = 0.0) {real = re;imaginary = im;}~ComplexNumber() { }//运算符重载public static ComplexNumber operator+ (ComplexNumber a, ComplexNumber b) {ComplexNumber c = new ComplexNumber(0, 0);c.real = a.real + b.real;c.imaginary = a.imaginary + b.imaginary;return c;}//链式调用public ComplexNumber linkA(out double re) {re = real;return this;}public ComplexNumber linkB(out double im) {im = imaginary;return this;}}相关文章:
C# 运算符重载 之前的小总结
C# 中支持运算符重载,所谓运算符重载就是我们可以使用自定义类型来重新定义 C# 中大多数运算符的功能。运算符重载需要通过 operator 关键字后跟运算符的形式来定义的,我们可以将被重新定义的运算符看作是具有特殊名称的函数,与其他函数一样&…...
XenCenter 2024 创建一个虚拟机
前言 实现,创建一个虚拟机,内存,cpu,磁盘,名称,网卡,配置 Xen Center 2024 download 创建虚拟机 选择系统类型 定义虚拟机名称 选择ISO镜像库 选择主服务器 分配虚拟机内存,cpu资源…...
tomcat 知多少
Tomcat的缺省端口: 默认端口为8080,可以通过在tomcat安装包conf目录下,service.xml中的Connector元素的port属性来修改端口。 tomcat 常见 Connector 运行模式(优化): 这三种模式的不同之处如下: BIO : 一…...
【详细讲解语言模型的原理、实战与评估】
🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提…...
Predict the Next “X” ,第四范式发布先知AIOS 5.0
今天,第四范式发布了先知AIOS 5.0,一款全新的行业大模型平台。 大语言模型的原理是根据历史单词去不断预测下一个单词,换一句常见的话:Predict the Next “Word”。 当前对于行业大模型的普遍认知就是沿用这种逻辑,用大…...
PCL使用4PCS配准
一、代码 C++ #include <pcl/registration/ia_fpcs.h> // 4PCS算法 #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/io/pcd_io.h> #include <pcl/io/ply_io.h> #include <boost/thread/thread.hpp> #include…...
【六 (2)机器学习-机器学习建模步骤/kaggle房价回归实战】
一、确定问题和目标: 1、业务需求分析: 与业务团队或相关利益方进行深入沟通,了解他们的需求和期望。 分析业务流程,找出可能的瓶颈、机会或挑战。 思考机器学习如何帮助解决这些问题或实现业务目标。 2、问题定义:…...
vue源码解析——vue如何将template转换为render函数
Vue 将模板(template)转换为渲染函数(render function)是 Vue 编译器的核心功能,它是 Vue 实现响应式和虚拟 DOM 的关键步骤。在 Vue 中,模板(template)是开发者编写的类似 HTML 的代…...
深入理解zookeeper
如果是zookeeper的初学者,可以看: zookeeper快速入门(合集)-CSDN博客 如果想要深入理解zookeeper,并在面试中取得更好的表现,可以看下面的文章,都是偏面试向的角度写的。 三分钟明白zookeeper…...
【漏洞复现】WordPress Plugin LearnDash LMS 敏感信息暴漏
漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin LearnDash LMS 4.10.2及之前版本存在安全漏洞&#x…...
phpmyadmin页面getshell
0x00 前言 来到phpmyadmin页面后如何getshell呢?下面介绍两种方法 0x01 select into outfile直接写入 1、利用条件 对web目录需要有写权限能够使用单引号(root) 知道网站绝对路径(phpinfo/php探针/通过报错等) secure_file_priv没有具体值 2、查看secure_file…...
题目:学习static定义静态变量的用法
题目:学习static定义静态变量的用法 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheate…...
【C++】编程规范之函数规则
对所有函数入参进行合法性检查 在编写函数时,应该始终对所有传入的参数进行合法性检查,以防止出现意外的错误或异常情况。这包括但不限于检查指针是否为空、整数是否在有效范围内、数组是否越界等等。通过对参数进行严格的合法性检查,可以避免…...
HTML常用的图片标签和超链接标签
目录 一.常用的图片标签和超链接标签: 1.超链接标签: 前言: 超链接的使用: target属性: 1)鼠标样式: 2)颜色及下划线: 总结: 2.图片标签: 前言: img的使用: 设置图片: 1.设置宽度和高度: 2.HTM…...
浏览器工作原理与实践--WebAPI:XMLHttpRequest是怎么实现的
在上一篇文章中我们介绍了setTimeout是如何结合渲染进程的循环系统工作的,那本篇文章我们就继续介绍另外一种类型的WebAPI——XMLHttpRequest。 自从网页中引入了JavaScript,我们就可以操作DOM树中任意一个节点,例如隐藏/显示节点、改变颜色、…...
TCP网络协议栈和Posix网络部分API总结
文章目录 Posix网络部分API综述TCP协议栈通信过程TCP三次握手和四次挥手(看下图)三次握手常见问题?为什么是三次握手而不是两次?三次握手和哪些函数有关?TCP的生命周期是从什么时候开始的? 四次挥手通信状态…...
《解释器模式(极简c++)》
本文章属于专栏- 概述 - 《设计模式(极简c版)》-CSDN博客 模式说明 方案: 对每个data建立一个单点解释器对象X,dataA和dataB之间的关系,建立一个关系解释器对象Y,这里的Y处理的是X1和X2。这样,…...
c#仿ppt案例
画曲线 namespace ppt2024 {public partial class Form1 : Form{public Form1(){InitializeComponent();}//存放所有点的位置信息List<Point> lstPosition new List<Point>();//控制开始画的时机bool isDrawing false;//鼠标点击开始画private void Form1_MouseD…...
10.图像高斯滤波的原理与FPGA实现思路
1.概念 高斯分布 图像滤波之高斯滤波介绍 图像处理算法|高斯滤波 高斯滤波(Gaussian filter)包含很多种,包括低通、高通、带通等,在图像上说的高斯滤波通常是指的高斯模糊(Gaussian Blur),是一种高斯低通滤波。通常这个算法也可以用来模…...
WebGIS 地铁交通线网 | 图扑数字孪生
数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展,地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎,结合 GIS 地图…...
经验小波变换(EWT):从理论基石到信号分解实战
1. 经验小波变换(EWT)的前世今生 我第一次接触EWT是在处理一段轴承振动信号时。当时用传统EMD方法分解出的IMF分量里,高频噪声和故障特征频率完全混在一起,就像把咖啡和牛奶搅成了拿铁——虽然都是白色液体,但根本分不…...
搞定气象数据的基础统计与可视化
是不是看着一堆气象原始数据就头大? 不会处理、不会统计、更不会做可视化图表? 其实根本不用懂编程、不用啃复杂专业知识,普通小白也能零基础玩转气象数据,从数据整理、基础统计到出专业好看的成品图,新手也能一键拿…...
半导体IP产业变革:从EDA历史看IP组装业务的未来
1. 项目概述:从EDA的剧本看IP产业的未来 在半导体行业摸爬滚打了十几年,我见过太多关于“IP核”和“EDA工具”的讨论,但很少有人能像Arteris的CEO Charlie Janac那样,把这两者的关系与未来看得如此透彻。他有一句话让我印象极深&a…...
AI Token中转副业火爆!小白也能快速上手?3小时建站+真实盈利模式全解析!
很多观望的小白最纠结两个核心问题:普通人搭建一个Token中转站到底要多久?建好之后真的能赚钱吗,真实赚钱逻辑是什么? 今天不讲噱头、不吹月入几万,结合行业真实现状、新手实操经验,一次性讲透搭建耗时、成…...
从单机到集群的基石:手把手配置ZooKeeper 3.5.8单机模式,为分布式应用铺路
从单机到集群的基石:手把手配置ZooKeeper 3.5.8单机模式,为分布式应用铺路 在分布式系统的世界里,协调服务就像交响乐团的指挥,确保每个乐器(节点)在正确的时间演奏正确的音符。ZooKeeper正是这样一个"…...
Claude技能生态构建指南:从Awesome清单到实战开发
1. 项目概述:为什么我们需要一个“Claude技能”的Awesome清单?如果你最近也在深度使用Claude,尤其是Claude Desktop或者API,你可能会和我有一样的感受:这家伙的能力边界,似乎每天都在被开发者们用各种“技能…...
保姆级教程:在银河麒麟Normal模式下,用kysec_set给第三方软件‘开绿灯’
银河麒麟系统下第三方软件安全授权全流程指南 在国产操作系统逐步普及的今天,银河麒麟作为主流选择之一,其安全机制设计严谨但有时也会给日常运维带来挑战。最近连续三个项目部署中,我都遇到了相同的问题——开发团队提供的工具包在测试环境运…...
AI应用开发工程师(Agent方向):AI Agent开发工程师高薪入行指南,掌握核心技能,成为企业AI大脑!
在 AI 领域,AI Agent(智能体) 正在成为最热门的方向之一。从 智能客服 到 自动化办公助手,再到 企业知识管理,AI Agent 正在改变人与机器的交互方式。那么,AI 应用开发工程师(Agent方向…...
CANN Ascend C SetStride API
SetStride 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/…...
为Cursor AI Agent构建专用HTTP客户端:扩展智能体联网能力实战
1. 项目概述:一个为Cursor AI Agent定制的HTTP客户端 如果你和我一样,深度使用Cursor作为日常开发的主力工具,那你肯定对它的“Agent”功能又爱又恨。爱的是,它能理解你的意图,帮你生成代码、重构函数、甚至写测试&…...
