C# 演算子 (C# リファレンス)C# operators (C# reference)

C# は組み込み型でサポートされている定義済みの演算子を多数提供します。C# provides a number of predefined operators supported by the built-in types. たとえば、算術演算子は組み込み数値型のオペランドの算術演算を実行し、ブール論理演算子bool オペランドの論理演算を実行します。For example, arithmetic operators perform arithmetic operations with operands of built-in numeric types and Boolean logical operators perform logical operations with the bool operands.

ユーザー定義型は、その型のオペランドに対応する動作を定義する特定の演算子をオーバーロードできます。A user-defined type can overload certain operators to define the corresponding behavior for the operands of that type. 詳細については、「演算子のオーバーロード」を参照してください。For more information, see Operator overloading.

次のセクションは、C# の演算子を優先順位の高い順に示しています。The following sections list the C# operators starting with the highest precedence to the lowest. 各セクションの演算子の優先順位は同じです。The operators within each section share the same precedence level.

主な演算子Primary operators

優先順位が最も高い演算子です。These are the highest precedence operators.

x.y – メンバー アクセス。x.y – member access.

x?.y – null 条件付きのメンバー アクセス。x?.y – null conditional member access. 左側のオペランドが null に評価される場合に null を返します。Returns null if the left-hand operand evaluates to null.

x?[y] - null 条件付き配列要素または型インデクサーのアクセス。x?[y] - null conditional array element or type indexer access. 左側のオペランドが null に評価される場合に null を返します。Returns null if the left-hand operand evaluates to null.

f(x) – メソッドの呼び出しまたはデリゲートの呼び出し。f(x) – method call or delegate invocation.

a[x] – 配列要素または型インデクサーのアクセス。a[x] – array element or type indexer access.

x++ – 後置インクリメント。x++ – postfix increment. x の値を返した後、1 大きくなった (通常は整数 1 が加算された) x の値で格納場所を更新します。Returns the value of x and then updates the storage location with the value of x that is one greater (typically adds the integer 1).

x-- – 後置デクリメント。x-- – postfix decrement. x の値を返した後、1 小さくなった (通常は整数 1 が減算された) x の値で格納場所を更新します。Returns the value of x and then updates the storage location with the value of x that is one less (typically subtracts the integer 1).

new – 型のインスタンス化。new – type instantiation.

typeof – オペランドを表す Type オブジェクトを返します。typeof – returns the Type object representing the operand.

checked – 整数演算のオーバーフロー チェックを有効にします。checked – enables overflow checking for integer operations.

unchecked – 整数演算のオーバーフロー チェックを無効にします。unchecked – disables overflow checking for integer operations. これがコンパイラの既定の動作です。This is the default compiler behavior.

default(T) – 型 T の既定の値を生成します。default(T) – produces the default value of type T.

nameof – 変数、型、またはメンバーの単純な (修飾されていない) 名前を定数文字列として取得します。nameof - obtains the simple (unqualified) name of a variable, type, or member as a constant string.

Delegate – delegate インスタンスを宣言して返します。delegate – declares and returns a delegate instance.

sizeof – 型オペランドのサイズをバイト単位で返します。sizeof – returns the size in bytes of the type operand.

stackalloc – スタックにメモリ ブロックを割り当てます。stackalloc - allocates a block of memory on the stack.

-> – メンバー アクセスと組み合わせてポインターを間接参照します。-> – pointer indirection combined with member access.

単項演算子Unary operators

これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。These operators have higher precedence than the next section and lower precedence than the previous section.

+x – x の値を返します。+x – returns the value of x.

-x – 数値の否定。-x – numeric negation.

!x – 論理否定。!x – logical negation.

~x – ビットごとの補数。~x – bitwise complement.

++x – 前置インクリメント。++x – prefix increment. 1 大きくなった (通常は整数 1 が加算された) x の値で格納場所を更新した後に x の値を返します。Returns the value of x after updating the storage location with the value of x that is one greater (typically adds the integer 1).

--x – 前置デクリメント。--x – prefix decrement. 1 小さくなった (通常は整数 1 が減算された) x の値で格納場所を更新した後に x の値を返します。Returns the value of x after updating the storage location with the value of x that is one less (typically subtracts the integer 1).

(T)x – 型キャスト。(T)x – type casting.

awaitTask を待機します。await – awaits a Task.

&x – 変数のアドレス。&x – address of a variable.

* x – ポインターの間接参照、または逆参照。*x – pointer indirection, or dereference.

true 演算子 - オペランドが確実に true であることを示すブールtrue を返します。true operator - returns the bool value true to indicate that an operand is definitely true.

false 演算子 - オペランドが確実に false であることを示すブールtrue を返します。false operator - returns the bool value true to indicate that an operand is definitely false.

乗算演算子Multiplicative operators

これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。These operators have higher precedence than the next section and lower precedence than the previous section.

x * y – 乗算。x * y – multiplication.

x / y – 除算。x / y – division. オペランドが整数の場合、結果は 0 に近い整数になるように切り捨てられます (例: -7 / 2 is -3)。If the operands are integers, the result is an integer truncated toward zero (for example, -7 / 2 is -3).

x % y – 剰余。x % y – remainder. オペランドが整数の場合、x を y で除算した剰余を返します。If the operands are integers, this returns the remainder of dividing x by y. q = x / yr = x % y の場合、x = q * y + r になります。If q = x / y and r = x % y, then x = q * y + r.

加法演算子Additive operators

これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。These operators have higher precedence than the next section and lower precedence than the previous section.

x + y – 加算。x + y – addition.

x – y – 減算。x – y – subtraction.

シフト演算子Shift operators

これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。These operators have higher precedence than the next section and lower precedence than the previous section.

x << y – ビットを左へシフトし、右側には 0 を格納します。x << y – shift bits left and fill with zero on the right.

x >> y – ビットを右へシフトします。x >> y – shift bits right. 左側のオペランドが int または long の場合、左側のビットには符号ビットが格納されます。If the left operand is int or long, then left bits are filled with the sign bit. 左側のオペランドが uint または ulong の場合、左側のビットには 0 が格納されます。If the left operand is uint or ulong, then left bits are filled with zero.

関係演算子と型検査演算子Relational and type-testing operators

これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。These operators have higher precedence than the next section and lower precedence than the previous section.

x < y – より小さい (x が y より小さい場合は true)。x < y – less than (true if x is less than y).

x > y – より大きい (x が y より大きい場合は true)。x > y – greater than (true if x is greater than y).

x <= y – 以下。x <= y – less than or equal to.

x >= y – 以上。x >= y – greater than or equal to.

is – 型の互換性。is – type compatibility. 評価される左側のオペランドを右側のオペランドで指定された型にキャストできる場合は、true を返します。Returns true if the evaluated left operand can be cast to the type specified by the right operand.

as – 型変換。as – type conversion. 左側のオペランドを右側のオペランドで指定された型にキャストして返します。ただし、(T)x が例外をスローした場合、asnull を返します。Returns the left operand cast to the type specified by the right operand, but as returns null where (T)x would throw an exception.

等値演算子Equality operators

これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。These operators have higher precedence than the next section and lower precedence than the previous section.

x == y – 等価比較。x == y – equality. 既定では、string 以外の参照型の場合、参照の等価性を返します (等価テスト)。By default, for reference types other than string, this returns reference equality (identity test). ただし、型は == をオーバーロードできるため、同一性のテストが目的の場合は objectReferenceEquals メソッドを使用することをお勧めします。However, types can overload ==, so if your intent is to test identity, it is best to use the ReferenceEquals method on object.

x != y – 等しくない。x != y – not equal. == のコメントを参照してください。See comment for ==. 型が == をオーバーロードする場合は、!= をオーバーロードする必要があります。If a type overloads ==, then it must overload !=.

論理 AND 演算子Logical AND operator

この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。This operator has higher precedence than the next section and lower precedence than the previous section.

x & ybool オペランドの場合は論理 AND、整数型のオペランドの場合はビットごとの論理 ANDx & ylogical AND for the bool operands or bitwise logical AND for the operands of the integral types.

論理 XOR 演算子Logical XOR operator

この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。This operator has higher precedence than the next section and lower precedence than the previous section.

x ^ ybool オペランドの場合は論理 XOR、整数型のオペランドの場合はビットごとの論理 XORx ^ ylogical XOR for the bool operands or bitwise logical XOR for the operands of the integral types.

論理演算子 ORLogical OR operator

この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。This operator has higher precedence than the next section and lower precedence than the previous section.

x | ybool オペランドの場合は論理 OR、整数型のオペランドの場合はビットごとの論理 ORx | ylogical OR for the bool operands or bitwise logical OR for the operands of the integral types.

条件 AND 演算子Conditional AND operator

この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。This operator has higher precedence than the next section and lower precedence than the previous section.

x && y – 論理 AND。x && y – logical AND. xfalse に評価される場合、y は評価されません。If x evaluates to false, then y is not evaluated.

条件 OR 演算子Conditional OR operator

この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。This operator has higher precedence than the next section and lower precedence than the previous section.

x || y – 論理 OR。x || y – logical OR. xtrue に評価される場合、y は評価されません。If x evaluates to true, then y is not evaluated.

Null 合体演算子Null-coalescing operator

この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。This operator has higher precedence than the next section and lower precedence than the previous section.

x ?? yxnull 以外の場合は x を返します。null の場合は y を返します。x ?? y – returns x if it is non-null; otherwise, returns y.

条件演算子Conditional operator

この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。This operator has higher precedence than the next section and lower precedence than the previous section.

t ? x : y – テスト t が true に評価される場合は x を評価して返します。それ以外の場合は y を評価して返します。t ? x : y – if test t evaluates to true, then evaluate and return x; otherwise, evaluate and return y.

代入演算子とラムダ演算子Assignment and lambda operators

これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。These operators have higher precedence than the next section and lower precedence than the previous section.

x = y – 代入。x = y – assignment.

x += y – インクリメント。x += y – increment. y の値を x の値に加算した結果を x に格納し、新しい値を返します。Add the value of y to the value of x, store the result in x, and return the new value. xイベントを指定した場合、y は、C# によってイベント ハンドラーとして追加される適切なメソッドである必要があります。If x designates an event, then y must be an appropriate method that C# adds as an event handler.

x -= y – デクリメント。x -= y – decrement. y の値を x の値から減算した結果を x に格納し、新しい値を返します。Subtract the value of y from the value of x, store the result in x, and return the new value. xイベントを指定する場合、y は C# によってイベント ハンドラーとして削除される適切なメソッドである必要があります。If x designates an event, then y must be an appropriate method that C# removes as an event handler.

x *= y – 乗算代入。x *= y – multiplication assignment. y の値を x の値に乗算した結果を x に格納し、新しい値を返します。Multiply the value of y to the value of x, store the result in x, and return the new value.

x /= y – 除算代入。x /= y – division assignment. x の値を y の値で除算した結果を x に格納し、新しい値を返します。Divide the value of x by the value of y, store the result in x, and return the new value.

x %= y – 剰余代入。x %= y – remainder assignment. x の値を y の値で除算した剰余を x に格納し、新しい値を返します。Divide the value of x by the value of y, store the remainder in x, and return the new value.

x &= y – AND 代入。x &= y – AND assignment. y の値と x の値の AND 演算を行った結果を x に格納し、新しい値を返します。AND the value of y with the value of x, store the result in x, and return the new value.

x |= y – OR 代入。x |= y – OR assignment. y の値と x の値の OR 演算を行った結果を x に格納し、新しい値を返します。OR the value of y with the value of x, store the result in x, and return the new value.

x ^= y – XOR 代入。x ^= y – XOR assignment. y の値と x の値の XOR 演算を行った結果を x に格納し、新しい値を返します。XOR the value of y with the value of x, store the result in x, and return the new value.

x <<= y – 左シフト代入。x <<= y – left-shift assignment. x の値を y で指定した分だけ左へシフトした結果を x に格納し、新しい値を返します。Shift the value of x left by y places, store the result in x, and return the new value.

x >>= y – 右シフト代入。x >>= y – right-shift assignment. x の値を y で指定した分だけ右へシフトした結果を x に格納し、新しい値を返します。Shift the value of x right by y places, store the result in x, and return the new value.

=> – ラムダ宣言。=> – lambda declaration.

関連項目See also