有没有人有 C#/CLR 给操作员的名称的详尽列表?(也许是我睡眠不足,但我似乎无法在 Google 上找到它)例如 op_Addition、op_Subtraction。此外,这些在其他文化中是否会有所不同?
我正在尝试创建一个可以添加/减去等两个对象的类,并且我已经完成了所有原语 - 我只需要做“其余的”。
非常感谢。
有没有人有 C#/CLR 给操作员的名称的详尽列表?(也许是我睡眠不足,但我似乎无法在 Google 上找到它)例如 op_Addition、op_Subtraction。此外,这些在其他文化中是否会有所不同?
我正在尝试创建一个可以添加/减去等两个对象的类,并且我已经完成了所有原语 - 我只需要做“其余的”。
非常感谢。
基于表达式类:
== op_Equality
!= op_Inequality
> op_GreaterThan
< op_LessThan
>= op_GreaterThanOrEqual
<= op_LessThanOrEqual
& op_BitwiseAnd
| op_BitwiseOr
+ op_Addition
- op_Subtraction
/ op_Division
% op_Modulus
* op_Multiply
<< op_LeftShift
>> op_RightShift
^ op_ExclusiveOr
- op_UnaryNegation
+ op_UnaryPlus
! op_LogicalNot
~ op_OnesComplement
op_False
op_True
++ op_Increment
-- op_Decrement
您可以在Framework Design Guidelines -> Operator Overloads下找到运算符元数据/生成的 MSIL 名称列表。
有一个不同的F# 运算符重载列表。
最后,请参阅ECMA-335 公共语言基础设施 (CLI) I.10.3 运算符重载,其中列出了 C++/CLI 的运算符。
接受的答案很好,因为它链接到可重载运算符的列表,但它没有严格回答问题,因为它在编译时没有提供运算符的名称。
亚军答案包括这一点,但它是一个不完整的列表,而且组织得不好。为了完整起见,我列出了我自己的列表,包括一些您可能认为是可重载的运算符,但事实并非如此。该列表按运算符优先级排序,从最高(最紧)优先级到最低。
Outside of Order of Operations (used when necessary to coerce types)
op_Implicit
op_True
op_False
Unary (only one operator)
++ op_Increment (Includes preincrement and postincrement)
-- op_Decrement (Includes predecrement and postdecrement)
- op_UnaryNegation
+ op_UnaryPlus
! op_LogicalNot
~ op_OnesComplement
op_Explicit
await (Not overloadable)
Multiplicative
/ op_Division
% op_Modulus
* op_Multiply
Additive
+ op_Addition
- op_Subtraction
Shift
<< op_LeftShift
>> op_RightShift
Relational
> op_GreaterThan
< op_LessThan
>= op_GreaterThanOrEqual
<= op_LessThanOrEqual
as (Not overloadable)
is (Not overloadable)
Equality
== op_Equality
!= op_Inequality
And
& op_BitwiseAnd
Exclusive Or
^ op_ExclusiveOr
Inclusive Or
| op_BitwiseOr
Conditional And
&& (Not overloadable - use "implicit operator bool" or "operator true")
Contional Or
|| (Not overloadable - use "implicit operator bool" or "operator true")
Null-Coalescing Operator
?? (Not overloadable)
Ternary
?: (Not overloadable - use "implicit operator bool" or "operator true")
Assignment
= (Not overloadable - for combined operator and assignment (such as +=), just use the operator (+))
注意:implicit operator bool
如果同时定义了 True 和 False 运算符,则 C# 编译器更喜欢使用它们。
根据引用的StackOverflow 问题,C# 编译器也发出/理解以下方法名称,但是
Unary
& op_AddressOf
* op_PointerDereference
Binary
. op_MemberSelection
-> op_PointerToMemberSelection
op_SignedRightShift
op_UnsignedRightShift
= op_Assign
*= op_MultiplicationAssignment
/= op_DivisionAssignment
%= op_ModulusAssignment
-= op_SubtractionAssignment
+= op_AdditionAssignment
<<= op_LeftShiftAssignment
>>= op_RightShiftAssignment
|= op_ExclusiveOrAssignment
&= op_BitwiseAndAssignment
|= op_BitwiseOrAssignment
op_UnsignedRightShiftAssignment
op_SignedRightShiftAssignment
, op_Comma
该网站给出了 C# 运算符的名称列表,显示了运算符、操作(名称)、示例和结果:C# 运算符列表