4

有没有人有 C#/CLR 给操作员的名称的详尽列表?(也许是我睡眠不足,但我似乎无法在 Google 上找到它)例如 op_Addition、op_Subtraction。此外,这些在其他文化中是否会有所不同?

我正在尝试创建一个可以添加/减去等两个对象的类,并且我已经完成了所有原语 - 我只需要做“其余的”。

非常感谢。

4

4 回答 4

6

基于表达式类:

== 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
于 2015-04-07T15:15:36.127 回答
5

这是C# 可重载运算符的完整列表

您可以在Framework Design Guidelines -> Operator Overloads下找到运算符元数据/生成的 MSIL 名称列表。

有一个不同的F# 运算符重载列表

最后,请参阅ECMA-335 公共语言基础设施 (CLI) I.10.3 运算符重载,其中列出了 C++/CLI 的运算符。

于 2009-03-16T05:44:09.793 回答
4

接受的答案很好,因为它链接到可重载运算符的列表,但它没有严格回答问题,因为它在编译时没有提供运算符的名称。

亚军答案包括这一点,但它是一个不完整的列表,而且组织得不好。为了完整起见,我列出了我自己的列表,包括一些您可能认为是可重载的运算符,但事实并非如此。该列表按运算符优先级排序,从最高(最紧)优先级到最低。

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# 编译器也发出/理解以下方法名称,但是

  • 我已经在 Visual Studio 2015 和 C#6.0 中运行了测试,试图让它们工作,并且
  • C#5.0 规范列出了“完整的一元 [和二元] 运算符函数名称集”(附录 A,第 469 页),这些都没有出现在其中。
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
于 2016-04-12T15:59:20.743 回答
0

该网站给出了 C# 运算符的名称列表,显示了运算符、操作(名称)、示例和结果:C# 运算符列表

于 2014-02-17T12:51:07.230 回答