C# operator关键字

【C#】运算符重载(operator) 可重载预定义的 C# 运算符。也就是说,当一个或两个操作数都是某类型时,此类型可提供操作的自定义实现。使用 operator 关键字来声明运算符。 阅读详情
perator
operator 关键字用于在类或结构声明中声明运算符。运算符声明可以采用下列四种形式之一:

public static result-type operator unary-operator ( op-type operand )
public static result-type operator binary-operator ( op-type operand, op-type2 operand2 )
public static implicit operator conv-type-out ( conv-type-in operand )
public static explicit operator conv-type-out ( conv-type-in operand )
参数:

result-type 运算符的结果类型。
unary-operator 下列运算符之一:+ - ! ~ ++ — true false
op-type 第一个(或唯一一个)参数的类型。
operand 第一个(或唯一一个)参数的名称。
binary-operator 其中一个:+ - * / % & | ^<< >> == != > < >=< =
op-type2 第二个参数的类型。
operand2 第二个参数的名称。
conv-type-out 类型转换运算符的目标类型。
conv-type-in 类型转换运算符的输入类型。
注意:

前两种形式声明了用户定义的重载内置运算符的运算符。并非所有内置运算符都可以被重载(请参见可重载的运算符)。op-type 和op-type2中至少有一个必须是封闭类型(即运算符所属的类型,或理解为自定义的类型)。例如,这将防止重定义整数加法运算符。
后两种形式声明了转换运算符。conv-type-in 和 conv-type-out中正好有一个必须是封闭类型(即,转换运算符只能从它的封闭类型转换为其他某个类型,或从其他某个类型转换为它的封闭类型)。
运算符只能采用值参数,不能采用 ref 或 out 参数。
C#要求成对重载比较运算符。如果重载了==,则也必须重载!=,否则产生编译错误。同时,比较运算符必须返回bool类型的值,这是与其他算术运算符的根本区别。
C# 不允许重载=运算符,但如果重载例如+运算符,编译器会自动使用+运算符的重载来执行+=运算符的操作。
运算符重载的其实就是函数重载。首先通过指定的运算表达式调用对应的运算符函数,然后再将运算对象转化为运算符函数的实参,接着根据实参的类型来确定需要调用的函数的重载,这个过程是由编译器完成。
任何运算符声明的前面都可以有一个可选的属性(C# 编程指南)列表。

using System;
using System.Collections.Generic;
using System.Text;

namespace OperatorOverLoading
{
class Program
{
static void Main(string[] args)
{
Student s1 = new Student(20, "Tom");
Student s2 = new Student(18, "Jack");
Student s3 = s1 + s2;

s3.sayPlus();
(s1 - s2).sayMinus();
Console.ReadKey();
}
}
public class Student
{
public Student() { }
public Student(int age, string name)
{
this.name = name;
this.age = age;

}
private string name;
private int age;

public void sayPlus()
{
System.Console.WriteLine("{0} 年龄之和为:{1}", this.name, this.age);

}
public void sayMinus() {
System.Console.WriteLine("{0} 年龄之差为:{1}", this.name, this.age);
}
//覆盖“+”操作符
public static Student operator +(Student s1, Student s2)
{
return new Student(s1.age + s2.age, s1.name + " And " + s2.name);

}
//覆盖“-”操作符
public static Student operator -(Student s1, Student s2) {
return new Student(Math.Abs(s1.age - s2.age), s1.name + "And" + s2.name);
}

}
}

安信可TB蓝牙模组系列 实战Ble Mesh智能照明系统搭建 本文详细介绍了如何使用安信可TB蓝牙模组系列搭建Ble Mesh智能照明系统。从硬件准备、固件烧录到手机APP组网全流程,提供了实战步骤和优化建议,特别适合智能家居开发者入门。Ble Mesh的自组网能力解决了蓝牙传输距离限制,实现全屋灯光智能控制。 阅读详情

相关推荐

【报错】sqli-labs靶场搭建出现“Unable to connect to the database: security”

搭建sqli-labs靶场时,“Unable to connect to the database: security”报错解决

九芒星的博客 2991

[C#]C# 运算符(Operators)

运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。本文主要介绍C# 中的运算符(算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符)的使用,以及相关示例代码。

FL1768317420的博客 3388

Robust MPC 4 (鲁棒&随机 MPC)

Robust MPC

weixin_44299806的博客 2736

c#操作符operate的用法

operate+ ,operate-的用法 ,看代码 /// </summary> public struct CorePoint { /// <summary> /// Initializes a new instance of CorePoint /// </summary> ...

sinat_31608641的博客 2226

CPU设计实战:Loongarch版 lab6--20条指令单周期CPU

这个debug卡我时间最长的就是通用寄存器的写使能信号,当时一直没找到,甚至把golden—trace生成了一遍又一遍,对照test,检查了各种,卡了很长时间,我都以为是我之前哪一步搞错了,或者环境什么的,但是一步步做下来并没有,并且“机器永远是对的”让我终于查到了错。debug到一半才想起来写个博客,就不写过程了,下个lab再写过程。下面是两个模块的代码,运行已通过仿真验证。其他的bug就还好,如果认真跟着。就能马上找出来,,上面的每一句话都很重要。走,按逻辑检查并且查。

m0_65369544的博客 6303

国税局发票查验中英文验证码识别最新版,识别率99.9%

采用深度学习进行发票查验验证码模型的训练,在我电脑上模型训练的环境如下: 显卡:RTX 2080TI tensorflow-gpu:2.5.3 1 训练集和测试集的准备 发票查验的验证码分为4种类型,分别为黑色、红色、黄色、蓝色,经过我的测试,采用4个模型的效果最好,每个模型对应识别一种类型的验证码。 首先我们4种类型的验证码都准备10万张。 00黑色类型的验证码: 01红色类型的验证码: 02黄色类型的验证码: 03蓝色类型的验证码: 验证码图像图像准备好后,对其进行标记,也就是对验证码重命名:

Keras深度学习 83万+

C#运算符重载----关键字operator

C#运算符重载----operator运算符重载的实现可重载和不可重载运算符实例原文链接 您可以重定义或重载**C#**中内置的运算符。因此,程序员也可以使用用户自定义类型的运算符。重载运算符是具有特殊名称的函数,是通过关键字operator后跟运算符的符号来定义的。与其他函数一样,重载运算符有返回类型和参数列表。 例如,请看下面的函数: public static Box operator+ (Box b, Box c) { Box box = new Box(); box.length =

天富儿的博客 1937

Vivado图形化界面烧写MCS文件到SPI FLASH全流程(附常见报错解决方案)

本文详细介绍了使用Vivado图形化界面将MCS文件烧录至SPI FLASH的完整操作流程。内容涵盖从环境准备、MCS文件生成到硬件连接与烧写的每一步,并针对SPI总线宽度报错、FLASH型号识别失败等常见问题提供了深度解决方案,帮助用户高效完成FPGA配置,摆脱对TCL命令行的依赖。

s8t9u0v1w的博客 536

c#中operator的运用

operator 只要是运算符都能重载 operator 关键字的主要作用是用来重载运算符的,还可以用于类或结构中类型的自定义转换。 下面看个例子 [csharp] view plain copy class Feige   {       //定义两个全局变量       int a, b;          //声明带两个参数的

miaobeihai的博客 7372

开源滑翔伞升降速度表:基于STM32与传感器融合的DIY飞行仪表

传感器融合是现代嵌入式系统与物联网设备中的核心技术,它通过整合多个传感器的数据,利用滤波与估计算法,获得比单一传感器更精确、更可靠的环境感知能力。其技术价值在于提升系统的鲁棒性、精度和上下文理解能力,广泛应用于无人机导航、可穿戴设备、工业监测及智能驾驶等领域。本文聚焦于一个具体的工程实践案例——开源多功能滑翔伞升降速度表(Open-Vario),该项目巧妙地运用了**卡尔曼滤波器**进行气压与GNSS数据的融合,以精确计算升降率,并基于**FreeRTOS**实时操作系统构建了一个稳定、可扩展的嵌入式平台,

weixin_33657398的博客 176

基于STC8G1K08A单片机的PCA捕获外部信号(100~1000HZ)程序实现

基于STC8G1K08A单片机的PCA捕获外部信号(100~1000HZ)程序实现

weixin_74013772的博客 255

Sentence Transformers集成aspire-sentence-embedder:简单3步构建句子嵌入系统

aspire-sentence-embedder是一款基于对比学习训练的句子嵌入模型,能够将文本转换为高维向量以实现语义相似度计算。本文将介绍如何通过3个简单步骤,使用Sentence Transformers框架快速集成该模型,构建属于你的句子嵌入系统。 ## 1. 安装必要依赖 首先确保你的环境中已安装Python 3.6+和pip工具。通过以下命令安装Sentence Transform

gitblog_01115的博客 1007

Unity音游开发全指南:模板与免费资源高效构建节奏游戏

**粒子特效** | [Universal VFX](https://assetstore.unity.com/packages/vfx/particles/universal-vfx-159182) | 免费视觉特效 || **UI素材** | [Game UI Pack](https://assetstore.unity.com/packages/2d/gui/game-ui-pack-86908) | 现代风格UI元素 |**音游开发的黄金法则**:完美的节奏游戏是音乐与游戏的和谐统一。

Loving_enjoy的博客 730

PostgreSQL配置审计从未如此简单:pg-utils check_config.sql使用指南

pg-utils是一款强大的PostgreSQL工具集,其中的check_config.sql脚本为数据库管理员提供了快速审计PostgreSQL配置的便捷方式。本文将详细介绍如何使用这个实用工具,帮助你轻松掌握PostgreSQL配置审计的核心技巧。 ## 为什么需要配置审计? PostgreSQL的性能和安全性很大程度上取决于其配置参数。默认配置通常不能满足生产环境的需求,而手动检查配置文

gitblog_01036的博客 1055

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

pg-utils:PostgreSQL DBA必备工具集,让数据库管理效率提升300%

pg-utils是一套功能强大的PostgreSQL实用工具集,专为数据库管理员(DBA)设计,旨在简化日常运维工作,显著提升数据库管理效率。无论是性能监控、索引优化还是数据迁移,这套工具集都能提供全方位的支持,帮助DBA轻松应对各种复杂场景。 ## 📋 核心功能模块 ### 1. 日志分析工具 位于`loganalyze/`目录下的`log_analyze.pl`脚本是日志分析的得力助手。

gitblog_00527的博客 1028

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

react-native-pg-utils(对react-native全局进行配置,对内置对象原型链增加方法,增加常用全局方法.)...

react-native-pg-utils 对react-native全局进行配置,对内置对象原型链增加方法,增加常用全局方法. 每次新建react-native项目之后都会发现有一些很常用的方法在这个项目中也会用到,有些对全局的配置(禁用模拟器上显示黄框,release发布版本中时console打印失效等).这些如果在新项目中在搞一次的话的确是很麻烦,所以我就将其封装成了这个库. github地...

weixin_30955341的博客 262

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C# operator关键字

operator关键字是用来重载内置运算符,或提供类或结构声明中的用户自定义转换 1.重载运算符: 运算符 可重载性  +、-、!、~、++、--、true、false  可以重载这些一元运算符, true和false运算符必须成对重载  +、-、*、/、%、&、|、^、>  可以重载这些二元运算符  ==、!=、

yuhai738639的博客 1831

C# 运算符(Operators)

运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。本文主要介绍C# 中的运算符(算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符)的使用,以及相关示例代码。 原文地址:C# 运算符(Operators) ...

m0_60105488的博客 264

C#使用operator关键字实现操作符重载

使用operator关键字实现操作符重载C#中,操作符都是一些静态方法,其返回值表示操作结果,其参数是操作数.当我们为一个类创建操作符时,我们称为"重载(OverLoad)"该操作符,与成员方法重载很像.要重载加法操作符(+),应这样写:public static Fraction operator+(Fraction lhs,Fraction rhs);将参数取名为lhs和rhs是我的习惯,参数

yaleiwang的专栏 2824

C#的operator运算符定义

自定义类型可以使用operator扩展,如显式类型转换、隐式类型转换、操作符重载等,可以让我们的自定义类和C#提供的类型操作尽可能保持一致,简化逻辑代码。

henreash的专栏 355

C# Operate Excel File

 Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户的欢迎。在设计应用系 统时,对于不同的用户,他们对于打印的需求是不一样的,如果要使得程序中的打印功能适用于每一个用户,可以想象程序设计是十分复杂的。由于Excel表格 的功能强大,又由于几乎每一台机器都安装了它,如果把程序处理的结果放到Excel表格中,这样每一个用户就可

hs123的专栏 872

c# 操作数符号

运算符重载 使用 operator 关键字来声明运算符。 运算符声明必须符合以下规则: 同时包含 public 和 static 修饰符。 一元运算符有一个输入参数,二元运算符有两个输入参数。 在每种情况下,都至少有一个参数必须具有类型 T 或 T?,其中 T 是包含运算符声明的类型,也就是在这个类型的参数里面定义了运算符 注意: 比较运算符必须成对重载。 也就是说,如果重载一对运算符中...

qq_37672438的博客 510

C#初识operator

C# operator 关键字的使用范例

气氛组,yyds 458

C#小功能之operator用法

vs2015-》新建控制台程序->插入如下代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Operation { class Program { static void Main(string[] args) { //执行

星河队长 1196

【C#语言入门】08. 操作符详解(上)

越靠上的操作符运算优先级越高,同一行的运算优先级相同,相同的运算优先级大多数则按照从左到右依次运算,赋值运算除外。

Cziii的博客 571

C# 转换关键字 operator

operator 使用 operator 关键字重载内置运算符,或在类或结构声明中提供用户定义的转换。 假设场景,一个Student类,有语文和数学两科成绩,Chinese Math,加减两科成绩,不重载运算,代码如下。 class Student { /// &lt;summary&gt; /// 语文成绩 /// &...

Repeat 1111
上一篇: C#一些基础知识
下一篇: C# this 三种用法
Chaim--Cmg
博客等级 码龄18年 6粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值