CLR via C# 方法 操作符重载方法

CLR对操作符重载一无所知,它甚至不知道什么是操作符。是编程语言定义了每个操作符的含义,以及当这些特殊符号出现时,应该生成什么样的代码。

例如在C#中,向基元(类型的)数字应用+符号,编译器生成将两个数加到一起的代码。将+符号应用于string对象,C#编译器生成将两个字符串连接到一起的代码。测试不等性时,C#使用 != 符号,^在C#中含义为异或(XOR)。

虽然CLR对操作符一无所知,但它确实规定了语言应如何公开操作符重载,以便由另一种语言的代码使用。每种编程语言都要自行决定是否支持操作符重载。如果决定支持,还要决定用什么语法来表示和使用他们。至于CLR,操作符重载只是方法而已。

对编程语言的选择决定了你是否获得对操作符重载的支持,以及具体的语法是什么。编译源码时,编译器会生成一个标识操作符行为的方法。CLR要求操作符重载方法必须是public和static方法。另外,C#要求操作符重载方法至少有一个参数的类型与当前定义这个方法的类型相同。之所以要进行这样的限制,是为了使C#编译器能在合理的时间内找到要绑定的操作符方法。

C# 的一元操作符及其相容于CLS的方法名
C#操作符特殊方法名推荐的相容于CLS的方法名
+op_UnaryPlusPlus
-op_UnaryNegationNegate
!op_LogicalNotNot
~op_OnesComplementOnesComplement
++op_IncrementIncrement
--op_DecrementDecrement
op_TrueIsTrue{get;}
op_FalseIsFalse{get;}

 

 

 

 

 

 

 

 

 

 

C#的二元操作符及其相容于CLS的方法名
C#操作符特殊方法名推荐的相容于CLS的方法名
+op_AdditionAdd
-op_SubtractionSubtract
*op_MultiplyMultiply
/op_DivisionDivide
%op_ModulusMod
&op_BitwiseAndBitwiseAnd
|op_BitwiseOrBitwiseOr
^op_ExclusiveOrXor
<<op_LeftShiftLeftShift
>>op_RightShiftRightShift
==op_EqualityEquals
!=op_InequalityEquals
<op_LessThanCompare
>op_GreaterThanCompare
<=op_LessThanOrEqualCompare
>=op_GreaterThanOrEqualCompare

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值