C#/ CLRが演算子に与える名前の完全なリストを持つ人はいますか? (たぶん私の睡眠不足が勃発しているかもしれませんが、私はそれをGoogle上で見つけることはできません)。 op_Addition、op_Subtraction。さらに、他の文化でこれらが異なる可能性はありますか?C#での演算子メソッドのメソッド名
2つのオブジェクトを追加/減算できるクラスを作成しようとしています。すべてのプリミティブを実行しました。「残りの部分」を実行するだけです。
多くのありがとうございます。
C#/ CLRが演算子に与える名前の完全なリストを持つ人はいますか? (たぶん私の睡眠不足が勃発しているかもしれませんが、私はそれをGoogle上で見つけることはできません)。 op_Addition、op_Subtraction。さらに、他の文化でこれらが異なる可能性はありますか?C#での演算子メソッドのメソッド名
2つのオブジェクトを追加/減算できるクラスを作成しようとしています。すべてのプリミティブを実行しました。「残りの部分」を実行するだけです。
多くのありがとうございます。
はここにあなたのコメントに応えて
は、私はあなたが表6-1のためのis here.検索をしたいものを信じる--- overloadable operators from MSDN.
--- EDITの完全なリストです。
に、より完全にカバーされますが、私は、実際のメソッド名を必要としています最後のアセンブリでは、op_Additionのように...たぶん私はそれらをすべて実装し、反映するつもりです。 –
ジョナサン、私は上記の新しいリンクがあなたが望むものを持っていると信じています。 –
完璧!どうもありがとう! –
このウェブサイトは、アクション(名前)演算子を表示し、例&の検索結果をC#の演算子の名前のリストを与える:C# Operator List式クラスに基づいて
:
== 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
受け入れオーバーロード可能な演算子のリストにリンクするので、答えは良いですが、コンパイル時に演算子の名前を提供しないため、厳密に質問に答えません。
ランナーアップの回答にはそれが含まれていますが、不完全なリストであり、うまく構成されていません。完全性のために、私は自分自身のリストを作った。リストは、最も高い(最強の)優先順位から最も低い優先順位までの演算子優先順位の順になっています。
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 (+))
注:両方が定義されている場合は、C#コンパイラは、代わりにTrueとFalseの演算子のimplicit operator bool
を好みます。
参照StackOverflow questionによれば、以下のメソッド名は、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 + +/CLIのために理解されると思います。私は最近、混合モードアセンブリのILをチェックし、これらの名前はマネージコードにコンパイルされたクラスに使用されます。 – IllidanS4
これは、私が知っているhttp://stackoverflow.com/questions/3016429/reflection-and-operator-overloads-in-c-sharp –