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

代入演算子 = は、右辺オペランドの値を、左辺オペランドに指定された変数、プロパティ、またはインデクサー要素に割り当てます。The assignment operator = assigns the value of its right-hand operand to a variable, a property, or an indexer element given by its left-hand operand. 代入式の結果は、左辺のオペランドに割り当てられる値です。The result of an assignment expression is the value assigned to the left-hand operand. 右辺のオペランドの型は、左辺のオペランドの型と同じであるか、暗黙に変換できる必要があります。The type of the right-hand operand must be the same as the type of the left-hand operand or implicitly convertible to it.

代入演算子は右結合です。つまり、次の形式の式があるとします。The assignment operator is right-associative, that is, an expression of the form

a = b = c

これが次のように評価されます。is evaluated as

a = (b = c)

次の例では、左側のオペランドとしてローカル変数、プロパティ、およびインデクサー要素を使用する代入演算子の使用方法を示します。The following example demonstrates the usage of the assignment operator with a local variable, a property, and an indexer element as its left-hand operand:

var numbers = new List<double>() { 1.0, 2.0, 3.0 };

Console.WriteLine(numbers.Capacity);
numbers.Capacity = 100;
Console.WriteLine(numbers.Capacity);
// Output:
// 4
// 100

int newFirstElement;
double originalFirstElement = numbers[0];
newFirstElement = 5;
numbers[0] = newFirstElement;
Console.WriteLine(originalFirstElement);
Console.WriteLine(numbers[0]);
// Output:
// 1
// 5

ref 代入演算子ref assignment operator

C# 7.3 以降では、ref 代入演算子 = ref を使用して、ref ローカル変数または ref 読み取り専用ローカル変数を割り当てることができます。Beginning with C# 7.3, you can use the ref assignment operator = ref to reassign a ref local or ref readonly local variable. 次の例は、ref 代入演算子の使用方法を示しています。The following example demonstrates the usage of the ref assignment operator:

void Display(double[] s) => Console.WriteLine(string.Join(" ", s));

double[] arr = { 0.0, 0.0, 0.0 };
Display(arr);

ref double arrayElement = ref arr[0];
arrayElement = 3.0;
Display(arr);

arrayElement = ref arr[arr.Length - 1];
arrayElement = 5.0;
Display(arr);
// Output:
// 0 0 0
// 3 0 0
// 3 0 5

ref 代入演算子の場合、その両方のオペランドの型が同じである必要があります。In the case of the ref assignment operator, the type of both its operands must be the same.

詳しくは、機能提案メモをご覧ください。For more information, see the feature proposal note.

複合代入。Compound assignment

2 項演算子 op の場合、フォームの複合代入式For a binary operator op, a compound assignment expression of the form

x op= y

上記の式は、次の式と同じです。is equivalent to

x = x op y

ただし、x が評価されるのは 1 回だけです。except that x is only evaluated once.

複合代入は、算術ブール論理ビット単位論理およびシフトの各演算子でサポートされています。Compound assignment is supported by arithmetic, Boolean logical, and bitwise logical and shift operators.

演算子のオーバーロード可/不可Operator overloadability

ユーザー定義型は、代入演算子をオーバー ロードできません。A user-defined type cannot overload the assignment operator. ただし、ユーザー定義型は、別の型への暗黙的な変換を定義できます。However, a user-defined type can define an implicit conversion to another type. この方法により、ユーザー定義型の値を、別の型の変数、プロパティ、またはインデクサー要素に割り当てることができます。That way, the value of a user-defined type can be assigned to a variable, a property, or an indexer element of another type. 詳細については、「User-defined conversion operators」(ユーザー定義の変換演算子) を参照してください。For more information, see User-defined conversion operators.

C# 言語仕様C# language specification

詳細については、C# 言語仕様の「Assignment operators (代入演算子)」セクションを参照してください。For more information, see the Assignment operators section of the C# language specification.

関連項目See also