2009-03-16 4 views
2

C#/ CLRが演算子に与える名前の完全なリストを持つ人はいますか? (たぶん私の睡眠不足が勃発しているかもしれませんが、私はそれをGoogle上で見つけることはできません)。 op_Addition、op_Subtraction。さらに、他の文化でこれらが異なる可能性はありますか?C#での演算子メソッドのメソッド名

2つのオブジェクトを追加/減算できるクラスを作成しようとしています。すべてのプリミティブを実行しました。「残りの部分」を実行するだけです。

多くのありがとうございます。

+0

これは、私が知っているhttp://stackoverflow.com/questions/3016429/reflection-and-operator-overloads-in-c-sharp –

答えて

4

はここにあなたのコメントに応えて

は、私はあなたが表6-1のためのis here.検索をしたいものを信じる--- overloadable operators from MSDN.

--- EDITの完全なリストです。

+0

に、より完全にカバーされますが、私は、実際のメソッド名を必要としています最後のアセンブリでは、op_Additionのように...たぶん私はそれらをすべて実装し、反映するつもりです。 –

+0

ジョナサン、私は上記の新しいリンクがあなたが望むものを持っていると信じています。 –

+0

完璧!どうもありがとう! –

0

このウェブサイトは、アクション(名前)演算子を表示し、例&の検索結果をC#の演算子の名前のリストを与える:C# Operator Listクラスに基づいて

3

== 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 
2

受け入れオーバーロード可能な演算子のリストにリンクするので、答えは良いですが、コンパイル時に演算子の名前を提供しないため、厳密に質問に答えません。

ランナーアップの回答にはそれが含まれていますが、不完全なリストであり、うまく構成されていません。完全性のために、私は自分自身のリストを作った。リストは、最も高い(最強の)優先順位から最も低い優先順位までの演算子優先順位の順になっています。

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#コンパイラによって理解/放出されているが、

  • 私は、これらの作業を取得しようとするの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 
+0

これは本当に面白いです、私はこれらの演算子の名前はC + +/CLIのために理解されると思います。私は最近、混合モードアセンブリのILをチェックし、これらの名前はマネージコードにコンパイルされたクラスに使用されます。 – IllidanS4

関連する問題